- 概述
- 準備條件
- 系統環境配置
- 安裝Java
- 安裝MySQL
- 安裝CM
- CM配置
- Q&A
- 參考
概述
最近公司需要研究大數據方向的內容,經初步討論,決定使用CDH版本
的Hadoop,使用Cloudera生態下的Cloudera Manager平臺。CDH(Cloudera’s Distribution,
including Apache Hadoop),是Hadoop分支中的一種,由Cloudera
維護,基於穩定版本的Apache hadoop構建,並繼承了許多補丁,可以直接用於生產環境。
Cloudera Manager則是爲了便於在集羣中進行Hadoop等大數據處理相關
的服務安裝和監控管理的組件,對集羣中主機、Hadoop、Hive、Spark等服務的安裝配置管理做了極大
簡化。
準備條件
本文環境是在虛擬機上搭建的分佈式環境。
- 硬件:
- 主節點 Intel Core i5-4200H,12G,80G 從節點Intel Core i5-5200u,12G,40G*2
- 軟件:
- 操作系統 : CentOS7.3 GNOME DESTOP + development tools組包
- java : 這裏使用的是jdk-8u131-linux-x64.rpm
- mysql : 這裏使用的是mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar以及mysql-connector-java-5.1.42-bin.jar
- Cloudera Manager
- 下載地址 : https://archive.cloudera.com/cm5/cm/5/
- 這裏下載的是 : https://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.11.1_x86_64.tar.gz
- CDH安裝包
- 下載地址 : http://archive.cloudera.com/cdh5/parcels
- 這裏用的是 :CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel和CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel.sha1
注意對應的版本號,CentOS7對應的是el7
系統環境配置
- 首先修改各臺機器上的主機名,如本人設置爲linuxvnode0,linuxvnode1,linuxvnode2。
# hostnamectl set-hostname linuxvnode0
- 1
- 修改主機名與IP的對應關係,向所有服務器配置/etc/hosts文件,向其中添加行
# vim /etc/hosts
192.168.8.96 linuxvnode0
192.168.8.97 linuxvnode1
192.168.8.98 linuxvnode2
- 1
- 2
- 3
- 4
- 配置SSH無祕鑰登錄服務,注意每臺機器上都要配置
# ssh-keygen -t rsa
# ssh-copy-id linuxvnode0
# ssh-copy-id linuxvnode1
# ssh-copy-id linuxvnode2
- 1
- 2
- 3
- 4
- 所有服務器均創建安裝用戶:cloudera
# groupadd cloudera
# useradd -g cloudera cloudera
# echo "*********" | passwd --stdin cloudera
- 1
- 2
- 3
- 所有服務器爲cloudera用戶配置sudo權限
# chmod u+w /etc/sudoers
# echo "cloudera ALL=(root)NOPASSWD:ALL" >> /etc/sudoers
# chmod u-w /etc/sudoers
- 1
- 2
- 3
- 所有服務器關閉防火牆和Selinux服務
關閉防火牆
# systemctl mask firewalld.service
關閉Selinux
# sed -i '/SELINUX=enforcing/d' /etc/selinux/config
# sed -i '/SELINUX=disabled/d' /etc/selinux/config
# echo "SELINUX=disabled" >> /etc/selinux/config
重啓後生效。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 所有服務器設置文件打開數量及最大進程數
cp /etc/security/limits.conf /etc/security/limits.conf.bak
# echo "* soft nproc 32000" >>/etc/security/limits.conf
# echo "* hard nproc 32000" >>/etc/security/limits.conf
# echo "* soft nofile 65535" >>/etc/security/limits.conf
# echo "* hard nofile 65535" >>/etc/security/limits.conf
- 1
- 2
- 3
- 4
- 5
- 配置集羣時間同步服務:通過ntp服務配置
ntp主節點配置:
# cp /etc/ntp.conf /etc/ntp.conf.bak
# cp /etc/sysconfig/ntpd /etc/sysconfig/ntpd.bak
# echo "restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap" >> /etc/ntp.conf
# echo "SYNC_HWCLOCK=yes" >> /etc/sysconfig/ntpd
# service ntpd restart
ntp從節點配置
創建shell腳本內容如下:
# vim /opt/scripts/sync_time.sh
# /sbin/service ntpd stop
# /usr/sbin/ntpdate linuxvnode0
# /sbin/service ntpd start
賦權
# chmod 777 sync_time.sh
建立定時任務
# crontab -e
輸入如下一行內容,保存退出:
0-59/10 * * * * /opt/scripts/sync_time.sh
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
安裝Java
每臺服務器需要安裝相同版本的Java。這裏採用的是rpm方式安裝Java.
- CentOS7自帶了OpenJDK,但並不適用Cloudera Manager,所以首先檢查安裝的Java,卸載自帶的OpenJDK。
[root@localhost ~]# rpm -qa | grep java
[root@localhost ~]# rpm -qa | grep java
tzdata-java-2014i-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.71 -2.5.3.1 .el7_0.x86_64
java-1.7.0-openjdk-1.7.0.71 -2.5.3.1 .el7_0.x86_64
java-1.8.0-openjdk-headless-1.7.0.71 -2.5.3.1 .el7_0.x86_64
java-1.8.0-openjdk-1.7.0.71 -2.5.3.1 .el7_0.x86_64
刪除上面的java包
# rpm -e --nodeps $PACKGENAME
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 安裝Oracle JDK
# rpm -ivh jdk-8u131-linux-x64.rpm Java默認安裝在/usr/java/目錄下
- 1
- 配置Java環境變量,在/etc/profile後添加:
# vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_131
JRE_HOME=/usr/java/jdk1.8.0_131/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
- 1
- 2
- 3
- 4
- 5
- 6
- 使環境變量生效
# source /etc/profile
- 1
建議手動指定一下java的使用版本,避免在安裝Spark組件時報錯
alternatives –config java
安裝MySQL
這裏使用的是mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar安裝,解壓縮後會有Mysql相應的rpm文件,
我們只需要依次安裝一下幾個rpm即可。
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm
mysql-community-client-5.7.18-1.el7.x86_64.rpm
mysql-community-server-5.7.18-1.el7.x86_64.rpm
1. 和安裝Java一樣,首先需要檢查是否已經安裝了MySQL。
# rpm -qa|grep mysql 如果有的話請先卸載
- 1
然後再依次安裝上述的rpm文件,因爲它們存在相互依賴。
2. 安裝完畢後啓用mysql服務。
# systemctl start mysqld
# systemctl status mysqld
- 1
- 2
3. 這種方式完成安裝MySQL後,會自動隨機生成一個原始密碼。登錄並修改密碼,否則報密碼過期錯誤。
# cat /var/log/mysqld.log | grep password
2017-05-13T05:39:44.497086Z 1 [Note] A temporary password is generated for root@linuxvnode0: sjsO:Pin<5c_
使用上述密碼登錄MySQL
# mysql -uroot -p
Enter password:
登錄成功後:
mysql> SET PASSWORD = PASSWORD('**********');
Query OK, 0 rows affected, 1 warning (0.00 sec)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
注意此處密碼設置必須用強密碼,否則安裝CM時報密碼過期錯誤。
4. 設置root授權訪問以上所有的數據庫,因爲CM安裝時會創建數據庫,這裏設置後安裝CM時可以設置數據庫的host爲linuxvnode0
mysql>grant all privileges on *.* to 'root'@'linuxvnode0' identified by '****' with grant option;
mysql>flush privileges;
- 1
- 2
5. 由於本人需要安裝hive做爲數據倉庫,同時使用了Mysql作爲Hive的存儲方式,所以這裏單獨爲hive建立一個庫。
#爲hive建庫hive
mysql>create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
- 1
- 2
個人感覺此處必須得新建一個庫與CM安裝時建立的庫分開,否則啓動Hive時會報角色無法啓動的錯誤。
安裝Cloudera Manager
1. 來到了重頭戲了,首先主節點上解壓相應的文件cloudera-manager-centos7-cm5.11.1_x86_64.tar.gz
到/opt/目錄下。
# tar -zxvf cloudera-manager-centos7-cm5.11.1_x86_64.tar.gz -C /opt/
- 1
2. 將mysql-connector-java-5.1.42-bin.jar放到/opt/cm-5.11.1/share/cmf/lib下並初始化數據庫
# cp mysql-connector-java-5.1.42-bin.jar /opt/cm-5.11.1/share/cmf/lib
/opt/cm-5.11.1/share/cmf/schema/scm_prepare_database.sh [-數據庫類型] [-創建的數據庫名] [-h主機名] [-u用戶名] [-p密碼]
# /opt/cm-5.11.1/share/cmf/schema/scm_prepare_database.sh mysql cm5111 -hlinuxvnode0 -uroot -p****** --scm-host linuxvnode0 scm scm scm
- 1
- 2
- 3
3. 配置agent:修改/opt/cm-5.11.1/etc/cloudera-scm-agent/config.ini文件修改server_host爲主節點主機名。
4. 每臺服務器上執行命令創建scm用戶
# useradd --system --home=/opt/cm-5.11.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
- 1
5. 將Agent同步到其他節點
# scp -r /opt/cm-5.11.1 linuxvnode1:/opt
# scp -r /opt/cm-5.11.1 linuxvnode2:/opt
- 1
- 2
6. 將parcels安裝包放置到/opt/cloudera/parcel-repo目錄下。
7. 執行相應的腳本,啓動服務。
主節點啓動 :
# /opt/cm-5.11.1/etc/init.d/cloudera-scm-server start
所有節點啓動 :
# /opt/cm-5.11.1/etc/init.d/cloudera-scm-agent start
- 1
- 2
- 3
- 4
8. 啓動成功後輸入 linuxvnode0:7180即可進入Cloudera Manager運維平臺界面,初始密碼爲 admin/admin.
(可能CM啓動較久,需要一點時間才能進入) 進入後按照提示即可安裝集羣以及相應組件。
如若安裝hive組件且使用Mysql類型的數據倉庫,那麼需要爲hive增加MySQL connector
cp mysql-connector-java-5.1.42-bin.jar /opt/cloudera/parcels/CDH/lib/hive/lib/mysql-connector-java-5.1.42-bin.jar
CM配置
由於機器集羣已經安裝好,下面借用了參考地址中的圖片說明CM的配置。
1. 一開始是進入登錄界面,輸入admin/admin即可登錄。
2. 選擇部署的版本。
可以看到,現在的免費版本沒有節點個數的限制了。
3. 繼續下一步,選擇安裝的CM的版本。
4. 當各個Agent節點正常啓動後,會展示每個節點的安裝情況。耐心等待安裝完即可。
5. 安裝檢查中可能提示以下問題
解決方法如下:
# sysctl -w vm.swappiness=10
# echo "vm.swappiness=10" >>/etc/sysctl.conf
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
然後在每個節點中加入啓動腳本:
# vim /etc/rc.local
6. 選擇你需要安裝的服務即可。
建議第一步安裝zookeeper服務,第二步按照hdfs服務,第三步安裝yarn服務,以後可以安裝需要定製的服務(hive,hbase,spark,flume等)
Q&A
- Hive
- version information not found.
- version information not found.
界面內hive->配置中
hive.metastore.schema.verification 設置爲false 去掉勾選。
參考
https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_install_path_c.html
http://www.cnblogs.com/codedevelop/p/6762555.html
http://www.cnblogs.com/wcwen1990/p/6841118.html?utm_source=itdadao&utm_medium=referral
ps:第一次用Markdown寫的,略酸爽。