基於centos7 安裝6.2版本CM以及CDH
- CM安裝包下載地址:
rpm包:https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/
allkeys.asc文件:https://archive.cloudera.com/cm6/6.2.0/allkeys.asc - CDH安裝包下載地址:https://archive.cloudera.com/cdh6/6.2.0/parcels/
以下操作主要是在root用戶下進行》》》
-
修改hostname(每個節點)
1.1 臨時修改
$ hostname hdfs1
1.2 長期修改
$ vi /etc/hostname
-
配置 /etc/hosts(每個節點)
192.168.101.1 hdfs1
192.168.101.2 hdfs2
192.168.101.3 hdfs3
192.168.101.4 hdfs4
192.168.101.5 hdfs5
其中選擇hdfs1作爲主節點
- 關閉防火牆、禁止防火牆開機自啓(每個節點)
$ systemctl stop firewalld #關閉防火牆
$ systemctl disable firewalld #禁止防火牆開機自啓
$ vi /etc/selinux/config #SELINUX=disabled (修改)
-
配置ssh免密登錄(可以不用配置)
~登錄各節點執行ssh-keygen -t rsa 一路回車到結束,在/root/.ssh/下面會生成一個公鑰文件id_rsa.pub
cat /home/root/.ssh/id_rsa.pub >> /home/root/.ssh/authorized_keys 將公鑰追加到authorized_keys
$ chmod 600 /home/root/.ssh/authorized_keys 修改權限
將/home/root/.ssh/authorized_keys從當前節點分發到其他各個節點。如:scp /home/root/.ssh/authorized_keys root@hdfs1:/home/root/.ssh/~ -
配置NTP服務(所有節點)
修改時區(改爲中國標準時區)
$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
安裝ntp$ yum -y install ntp
配置ntp主機服務器,註釋掉其他ntp服務器
$ vim /etc/ntp.conf
server hdfs1
重新啓動 ntp服務:$ service ntpd restart
設置開機自啓:$ systemctl enable ntpd.service
ntpdc -c loopinfo #查看與時間同步服務器的時間偏差
ntpq -p #查看當前同步的時間服務器
ntpstat #查看狀態
-
修改Linux swappiness參數(所有節點)
爲了避免服務器使用swap功能而影響服務器性能,一般都會把vm.swappiness修改爲0(cloudera建議10以下)
$ cd /usr/lib/tuned/
$ grep "vm.swappiness" * -R
#查詢出後依次修改 -
禁用透明頁(所有節點)
在/etc/rc.local 添加命令:
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
添加可執行權限:chmod +x /etc/rc.d/rc.local -
JDK安裝(所有節點)
$ rpm -qa | grep java
# 查詢已安裝的java
$ yum remove java*
# 卸載
$ rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
$ vi /etc/profile
#末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
$ source /etc/profile
$ java -version
#驗證安裝是否成功
-
創建/usr/share/java目錄,將mysql-jdbc包放進去(所有節點)
$ mkdir -p /usr/share/java
$ mv /opt/mysql-j/mysql-connector-java-5.1.34.jar /usr/share/java/
注意:mysql-connector-java-5.1.34.jar 一定要命名爲mysql-connector-java.jar -
Mysql安裝(選擇一個節點)
-
卸載舊的mysql(如有)以及mariadb:rpm -qa|grep mariadb
$ rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
-
解壓mysql安裝包並進行安裝:
$ tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
$ rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
- MYSQL配置:
$ mysqld --initialize --user=mysql # 初始化mysql使mysql目錄的擁有者爲mysql用戶
$ cat /var/log/mysqld.log # 最後一行會有隨機生成的密碼
$ systemctl start mysqld.service # 設置mysql服務自啓
$ mysql -uroot –ppwd
登錄進去後,ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.需要修改訪問密碼:
ALTER USER USER() IDENTIFIED BY ‘rootpwd’;
如果是5.7之前版本,可以使用如下方式: SET PASSWORD = PASSWORD(‘rootpwd’);
如果不能登陸,設置免密登錄並重啓mysql服務:
vi /etc/my.cnf
#在[mysqld]的段中加上一句:skip-grant-tables ,
然後重啓mysql: systemctl restart mysqld
-
創建庫(後續安裝服務等使用)
create database metastore default charset utf8 collate utf8_general_ci; create database amon default charset utf8 collate utf8_general_ci; create database rman default charset utf8 collate utf8_general_ci; create database hue default charset utf8 collate utf8_general_ci; create database oozie default charset utf8 collate utf8_general_ci; grant all on metastore.* to 'metastore'@'%' identified by 'metastore'; grant all on amon.* to 'amon'@'%' identified by 'amon'; grant all on rman.* to 'rman'@'%' identified by 'rman'; grant all on hue.* to 'hue'@'%' identified by 'hue'; grant all on oozie.* to 'oozie'@'%' identified by 'oozie';
權限回收:revoke all privileges,grant option from ‘root’@’%’;
- 安裝Httpd服務(hdfs1節點)
$ yum install httpd
$ service httpd start
$ systemctl enable httpd.service 設置httpd服務開機自啓
$ ps -ef | grep httpd 查看httpd服務是否啓動
- 配置Cloudera Manager包yum源(hdfs1節點)
-
配置Web服務器
$ mkdir -p /var/www/html/cloudera-repos/cdh6.2
把 CDH 6.2 的三個文件放到該目錄下,注意把sha256後綴的文件名修改爲sha
$ mkdir -p /var/www/html/cloudera-repos/cm6.2
將Cloudera Manager安裝需要的5個rpm包,asc文件以及jdk文件下載到本地,放在同一目錄,執行createrepo命令生成rpm元數據。$ cd /var/www/html/cloudera-repos/cm6.2 $ yum install createrepo $ createrepo .#(注意此命令的最後帶一個點) 最終 cm6.2目錄下多了一個repodata目錄
-
- 修改 /etc/httpd/conf/httpd.conf 配置文件,在IfModule mime_module中修改以下內容: 把AddType application/x-gzip .gz .tgz 修改爲 AddType application/x-gzip .gz .tgz .parcel
- 重啓httpd服務
systemctl restart httpd
,並在瀏覽器訪問:
http://hdfs1/cloudera-repos/
- 製作Cloudera Manager的repo源(agent節點)
- $ vi /etc/yum.repos.d/cloudera-manager.repo
name=ClouderaManager baseurl=http://hdfs1/cloudera-repos/cm6.2 enabled=1 # 或者enable=true gpgcheck=0 # 或者gpgcheck=false
- 更新yum源
$ yum clean all $ yum makecache $ yum repolist
- 重啓httpd服務
$ systemctl restart httpd
-
安裝Cloudera Manager Server(hdfs1)
-
安裝CM6.2時,沒安裝jdk的要在各節點先安裝官方提供的JDK:oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
- 第一種方式:因爲已經配置好repo倉庫所以yum時會到hdfs1/cm6.2目錄下找到oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm進行安裝
$ yum -y install oracle-j2sdk1.8-1.8.0+update181-1.x86_64
默認安裝在 /usr/java/jdk1.8.0_181-cloudera$ vim /etc/profile
文件中添加如下內容export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera export CLASSPATH=.:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
重新加載profile配置文件,讓配置文件生效:
$ source /etc/profile
檢查是否已配置好新的JDK:$ java -version
然後scp到其他節點.- 第二種方式
直接使用 rpm -ivh 命令安裝 rpm 文件的方式
$ rpm -ivh /var/www/html/cm6.2/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
-
通過yum安裝Cloudera Manager Server:(Cloudera Manager Server的源 已經配置到了repo庫中)
$ yum -y install cloudera-manager-server cloudera-manager-agent
最後一行顯示 Complete!安裝完CM後/opt/ 下會出現cloudera目錄
$ mv /opt/parcels/* /opt/cloudera/parcel-repo
# 將parcel包移動到指定位置 -
初始化數據庫,格式:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -hmysql_host -uroot -p'root' --scm-host hdfs1 cm cm_user cm_pwd
注意:如果cm庫已經存在,會報錯,需要刪除
執行成功最後一行顯示 All done, your SCM database is configured correctly!
必須保證/usr/share/java目錄中已經存在 mysql-connector-java.jar 的軟連接:ln -s mysql-connector-java-5.1.46.jar mysql-connector-java.jar -
啓動Cloudera Manager Server
$ systemctl start cloudera-scm-server $ ps -ef | grep cloudera-scm-server #查看是否啓動 $ systemctl status cloudera-scm-server #顯示 Active: active (running)
- 檢查端口是否監聽
$ yum install net-tools #安裝 netstat $ netstat -lnpt | grep 7180 #要等一段時間啓動完全啓動成功後,才能看到端口被使用,然後才能真正訪問到CM的登錄網頁 tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 68289/java
- 通過 hdfs1:7180/cmf/login 訪問 CM,之後相關組件可在頁面進行安裝了
-
-
遇到的問題:
- 在部署agent時出現錯誤:
MainThread agent ERROR Failed to connect to previous supervisor.
這時候要確認一下:hostname 和ip是否對應 (/etc/sysconfig/network 和 /etc/hosts )
(hostname 臨時修改方法: hostname master)
如果對的話,還存在問題,那麼嘗試用這種方法(殺掉進程):
kill -9 $(pgrep -f supervisord) 然後重啓agent即可。 - 如果在界面安裝部署agent過程出現中斷導致無法繼續安裝:
需要kill掉agent節點兩個進程:
kill -9 ${pgrep -f 'cloudera-scm-agent/events'}
kill -9 $(pgrep -f supervisord)