cdh 安装_使用Cloudera的CDH部署Hadoop:第三步,安装管理平台和数据库
導(dǎo)讀
這篇文章是關(guān)于使用CDH搭建Hadoop集群的第三步:安裝Cloudera Manager Server和數(shù)據(jù)庫的。
這篇文章有點(diǎn)長,涉及的知識點(diǎn)較多,略顯零碎。雖然筆者可以將一些內(nèi)容剔除,但筆者沒有這么做,是因?yàn)橄氡M可能的把筆者的實(shí)踐過程完整的記錄下來,讓后面的同學(xué)切實(shí)感受到安裝的過程并可以避開筆者踩過的坑。
本文主要參考Cloudera官方文檔。
在進(jìn)行這一步之前,應(yīng)該進(jìn)行充分的前期準(zhǔn)備。關(guān)于前期準(zhǔn)備工作的相關(guān)內(nèi)容請參考文章:
1)使用Cloudera的CDH部署Hadoop:準(zhǔn)備工作
2)使用Cloudera的CDH部署Hadoop:第一步,配置package倉庫
3)使用Cloudera的CDH部署Hadoop:第二步,安裝JDK
1安裝Cloudera Manager Server
安裝Cloudera Manager Server packages的主機(jī)不必是集群的一個(gè)主機(jī),這個(gè)主機(jī)要能訪問本地或遠(yuǎn)程的數(shù)據(jù)庫。
如果你配置了局域網(wǎng)yum源那么命令:
yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
如果沒有,那么命令:
sudo yum --nogpgcheck localinstall cloudera-manager-daemons-*.rpm
sudo yum --nogpgcheck localinstall cloudera-manager-server-*.rpm
注意:先不裝cloudera-manager-agent,因?yàn)楹竺媸褂霉芾硐到y(tǒng)自動安裝。
2安裝數(shù)據(jù)庫
Cloudera Manager使用數(shù)據(jù)庫來存儲Cloudera Manager configuration,系統(tǒng)健康狀況,任務(wù)執(zhí)行進(jìn)度等信息。
建議Cloudera Manager Server和數(shù)據(jù)庫分開部署,這樣可以隔離錯(cuò)誤。
2.1需要數(shù)據(jù)庫的組件
Cloudera Manager Server, Oozie Server, Sqoop Server, Activity Monitor, Reports Manager, Hive Metastore Server, Hue Server, Sentry Server, Cloudera Navigator Audit Server, Cloudera Navigator Metadata Server。
2.2安裝與配置數(shù)據(jù)庫(MySql)
訪問https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#cdh_cm_supported_db查看支持的數(shù)據(jù)庫版本。
注意:
1)如果安裝5.6或 5.7,必須安裝MySQL-shared-compat或MySQL-shared package
2)注釋:雖然CDH官網(wǎng)這么說,但是mysql官網(wǎng)的5.7安裝包中已經(jīng)沒有MySQL-shared-compat或MySQL-shared package,不過5.6的有。
3)datadir目錄默認(rèn)是/var/lib/mysql劃分了足夠的空間
使用命令:du -hs /var/lib/mysql
4)Mysql的GTID復(fù)制機(jī)制開啟了,Cloudera Manager安裝會失敗。
下載MySql然后手動安裝。
下面這些命令在聯(lián)網(wǎng)情況下可以,若不連接外網(wǎng)則沒法使用這個(gè)命令來裝。
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
例:
wget http://192.168.107.83/mysql/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum update
sudo yum install mysql-server
sudo systemctl start mysqld
將MySQL加入局域網(wǎng)yum源
還是使用事先構(gòu)建好的局域網(wǎng)的yum源。
去網(wǎng)站:https://dev.mysql.com/downloads/mysql/5.7.html#downloads將mysql下載下來。然后放到y(tǒng)um服務(wù)器上。
注意要自己生成repodata目錄文件,使用createrepo命令。
例如,將rpm包放置于/var/www/html/mysql/5.7.23下,那么執(zhí)行命令:
createrepo /var/www/html/mysql/5.7.23
命令執(zhí)行成功:
在/var/www/html/mysql/5.7.23下生成一個(gè)repodata文件夾
打開這個(gè)repodata,看到文件:
配置客戶端,使用此yum源
打開/etc/yum.repos.d/,創(chuàng)建一個(gè)repo文件
[mysql]
name=mysql
baseurl=http://192.168.107.83/mysql/5.6.5.6.41-1.el7.x86_64/enabled=1
gpgcheck=0
priority=1
將baseurl設(shè)置為http://192.168.107.83/mysql,那么repodata文件夾就要在mysql目錄下,所以將上述生成的repodata移動到mysql下。
準(zhǔn)備工作都已完成,開始安裝mysql。
初次在Centos上安裝mysql報(bào)錯(cuò):
這是軟件包依賴 mariadb組件的緣故,卸載這個(gè)。
yum -y remove mariadb-libs
然后安裝mysql:
yum install mysql-community-server (安裝5.6的命令式y(tǒng)um install mysql-server)
選y,繼續(xù)。
但是有如下報(bào)錯(cuò):
看來是找不到文件,因?yàn)闄C(jī)器自動找的是http://192.168.107.83/mysql/mysql-community-common-5.7.23-1.el7.x86_64.rpm
這個(gè)文件當(dāng)然不存在,因?yàn)槠湓?#xff1a;/var/www/html/mysql/5.7.23,這個(gè)路徑下。
于是將baseurl改為:
http://192.168.107.83/mysql/5.7.23
這樣就完全沒有問題了。
查看安裝了哪些服務(wù):
rpm -qa | grep mysql*
啟動MySql
systemctl start mysqld.service
可能要等幾毫秒的時(shí)間。
看mysql是否正常運(yùn)行
ps -ef | grep mysqld
附:卸載mariadb
systemctl stop mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64
rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
另外,安裝完5.6以后,沒找到/etc/my.cnf,原因是:
第一種說法,my.cnf只是MySQL啟動時(shí)的一個(gè)參數(shù)文件,可以沒有它,這時(shí)MySQL會用內(nèi)置的默認(rèn)參數(shù)啟動,
第二種說法,MySQL在啟動時(shí)自動使用/usr/share/mysql(或/usr/)目錄下的my-medium.cnf文件,這種說法僅限于rpm包安裝的MySQL,
解決方法:
只需要復(fù)制一個(gè)/usr/share/mysql目錄下的.cnf文件到/etc目錄,并改名為my.cnf即可。
3配置和啟動MySql服務(wù)
1)如果Mysql啟動,那么停止他:sudo systemctl stop mysqld
2)把/var/lib/mysql/ib_logfile0 和/var/lib/mysql/ib_logfile1移到備份位置。使用命令(mv /var/lib/mysql/ib_logfile0 /root/)
3)確定my.cnf的位置,默認(rèn)的為/etc/my.cnf
4)更新my.cnf
· 為了避免死鎖,隔離級別設(shè)置為READ-COMMITTED
· 配置為使用InnoDB。配置MyISAM,那么Cloudera Manager啟不來。
· 使用命令mysql> show table status;檢查使用的是哪種引擎。
· 設(shè)置innodb_flush_method property為O_DIRECT,因?yàn)橄到y(tǒng)需要高的寫吞吐量。
· 根據(jù)集群規(guī)模設(shè)置max_connections
配置示例:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
symbolic-links = 0
key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1
max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M
#log_bin should be on a disk with enough free space.
#Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your
#system and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log
#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1
binlog_format = mixed
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
sql_mode=STRICT_ALL_TABLES
5)如果AppArmor和Mysql跑在同臺機(jī)器上,要配置AppArmor許可Mysql寫二進(jìn)制文件
6)允許開機(jī)啟動MySql:sudo systemctl enable mysqld
7)啟動Mysql:sudo systemctl start mysqld
Centos 7 裝5.6上述命令無法使用,要用:systemctl start mysql
8)設(shè)置密碼
這一步似乎不行,下面見下面9)給出正確做法
運(yùn)行sudo /usr/bin/mysql_secure_installation設(shè)置MySQL root password,新安裝的MySql服務(wù),root password是空的。
sudo /usr/bin/mysql_secure_installation
過程類似:
[...]
Enter current password for root (enter for none):
OK, successfully used password, moving on...
[...]
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
[...]
Disallow root login remotely? [Y/n] N
[...]
Remove test database and access to it [Y/n] Y
[...]
Reload privilege tables now? [Y/n] Y
All done!
9)設(shè)置密碼
grep "password" /var/log/mysqld.log
隨機(jī)密碼是:lVBIfgklx1>&
使用上面生成的隨機(jī)密碼登錄系統(tǒng):
mysql -u root -p
lVBIfgklx1>&
更改密碼:
SET PASSWORD = PASSWORD('cnki2018');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
執(zhí)行這個(gè)語句會報(bào)錯(cuò):
這是因?yàn)?#xff1a;
為了加強(qiáng)安全性,MySQL5.7為root用戶隨機(jī)生成了一個(gè)密碼,在error log中,關(guān)于error log的位置,如果安裝的是RPM包,則默認(rèn)是/var/log/mysqld.log。
如果只是修改為一個(gè)簡單的密碼,會報(bào)錯(cuò)誤。
這與validate_password_policy的值有關(guān):
validate_password_policy取值:
默認(rèn)是1,即MEDIUM,所以剛開始設(shè)置的密碼必須符合長度,且必須含有數(shù)字,小寫或大寫字母,特殊字符。
為了能設(shè)置一個(gè)簡單的密碼,可將validate_password_policy設(shè)置為0:
set global validate_password_policy=0;
設(shè)置完后,要重新設(shè)置密碼
但是設(shè)置密碼為cnki太短,先設(shè)置密碼為cnki2018!,然后看下密碼長度要求:
select @@validate_password_length;
所以設(shè)置為將密碼設(shè)置為cnki2018。
可以設(shè)置密碼長度:set global validate_password_length=1;
但是注意,密碼長度有最小限制:
validate_password_number_count+ validate_password_special_char_count+ (2 * validate_password_mixed_case_count)
其中,validate_password_number_count指定了密碼中數(shù)據(jù)的長度,validate_password_special_char_count指定了密碼中特殊字符的長度,validate_password_mixed_case_count指定了密碼中大小字母的長度。
這些值默認(rèn)都是1,所以密碼最小值為4。
設(shè)置用戶 root 可以在任意 IP 下被訪問:
grant all privileges on *.* to root@"%" identified by "new password";
刷新權(quán)限使之生效:
flush privileges;
在選錯(cuò)MySQL版本或者無法安裝需要重裝的情況下,要卸載Mysql
卸載MySql:
rpm -qa |grep -i mysql
yum remove
注意先查出來然后再卸載
殺死MySQL進(jìn)程,強(qiáng)制登錄
執(zhí)行g(shù)rep "password" /var/log/mysqld.log無法獲得臨時(shí)密碼
采用強(qiáng)制登錄:
1、systemctl stop mysqld
2、systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
3、systemctl start mysqld
4、mysql -u root
5、UPDATE mysql.user SET authentication_string = PASSWORD('cnki2018') WHERE User = 'root' AND Host = 'localhost';
6、FLUSH PRIVILEGES;
7、quit;
執(zhí)行完上述步驟在執(zhí)行其他語句可能出錯(cuò)
所以在執(zhí)行下面語句:
SET PASSWORD = PASSWORD('cnki2018');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
4安裝MySql JDBC驅(qū)動
在Cloudera Manager Server主機(jī)上及其他需要的主機(jī)上安裝MySql JDBC。
注意MySQL 5.6需要5.1.26及以上版本的JDBC驅(qū)動。
Cloudera建議使用5.1版本的JDBC驅(qū)動。
注意不要使用yum install來安裝MySQL驅(qū)動包,因?yàn)樗麜惭bOpenJDK(如果將openJDK卸載了,那么就沒問題)。
下載MySQL JDBC driver(.tar.gz格式文件):http://www.mysql.com/downloads/connector/j/5.1.html
解壓:tar zxvf mysql-connector-java-5.1.46.tar.gz
拷貝剛解壓的文件到:/usr/share/java/,如果沒有就先創(chuàng)建這個(gè)目錄。
sudo mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.46
sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
5創(chuàng)建數(shù)據(jù)庫
一定要配置為支持utf8編碼。
一定要記錄下所創(chuàng)建的數(shù)據(jù)庫名稱,用戶名,密碼。Cloudera Manager安裝向?qū)玫竭@些信息。
1)以root賬號登陸:mysql -u root -p
2)創(chuàng)建數(shù)據(jù)庫:
CREATE DATABASE DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
例:CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON .* TO ''@'%' IDENTIFIED BY '';
例:GRANT ALL ON scm.* TO scm@'%' IDENTIFIED BY 'cnki2018';
GRANT ALL ON amon.* TO amon@'%' IDENTIFIED BY 'cnki2018';
GRANT ALL ON rman.* TO scm@'%' IDENTIFIED BY 'cnki2018';
注:
刪除數(shù)據(jù)庫命令:drop database ;
例:drop database scm;
Cloudera Manager configuration settings提供了一些默認(rèn)值,但不必一定使用這些。
3)確認(rèn):
SHOW DATABASES;
SHOW GRANTS FOR ''@'%';
例:SHOW GRANTS FOR scm@'%';
注:一些mysql相關(guān)命令
使用數(shù)據(jù)庫:use ;
列出所有表:show tables;
總結(jié)
以上是生活随笔為你收集整理的cdh 安装_使用Cloudera的CDH部署Hadoop:第三步,安装管理平台和数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取图片源码_python抓
- 下一篇: java 输出_使用IntelliJ I