Ubuntu 16.04上搭建CDH5.16.1叢集
本文參考自:《Ubuntu16.04上搭建CDH5.14叢集》
1.準備三臺安裝Ubuntu 16.04.4 LTS系統的伺服器,假設ip地址分佈為
192.168.100.19
192.168.100.20
192.168.100.21
(如果是虛擬機器,建議記憶體配置為8G或以上)
2.所有的操作都在root下進行,所以首先需要設定ssh可以使用root登入(如果已經是root登入則跳過)
①設定root的登入密碼
sudo passwd root
②切換到root使用者
sudo su root
③設定登入賬戶可以使用root
vi /etc/ssh/sshd_config
#PermitRootLogin prohibit-password #遮蔽這一行
PermitRootLogin yes #增加這一行
④更新軟體列表並檢查是否聯網狀態
apt-get update
3.關閉防火牆
ufw disable
4.設定三臺機器的hostname和hosts
①設定hostname:
vi /etc/hostname
192.168.100.19對應設定為hadoop-master
192.168.100.20對應設定為hadoop-slave1
192.168.100.21對應設定為hadoop-slave2
②修改hosts
vi /etc/hosts
127.0.0.1 localhost
#127.0.1.1 test1 #遮蔽這一行
#新增下面三行
192.168.100.19 hadoop-master
192.168.100.20 hadoop-slave1
192.168.100.21 hadoop-slave2
③使用ping命令,檢視以上設定是否正確
ping hadoop-master ping hadoop-slave1 ping hadoop-slave2
④重啟後用root登入
5.讓三臺伺服器之間互相可以使用root無需輸入密碼進行ssh登入。
①生成公鑰(不要設定密碼)
ssh-keygen -t rsa
截圖如下:
②將本機的公鑰複製到另外兩臺伺服器上。(過程需要輸入目標伺服器的root登入密碼)
ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop-master #在slave1和slave2上執行
ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop-slave1 #在master和slave2上執行
ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop-slave2 #在master和slave1上執行
③測試是否成功
ssh hadoop-master #無密碼遠端登入hadoop-master,使用exit退出
ssh hadoop-slave1 #無密碼遠端登入hadoop-slave1,使用exit退出
ssh hadoop-slave2 #無密碼遠端登入hadoop-slave2,使用exit退出
④如果出現下面的報錯
ssh:connect to host hadoop-slave1 port 22: Connection refused
ssh: connect to host hadoop-slave1 port 22: Connection timed out
檢查/etc/hosts檔案中ip和hostname是否正確
檢查防火牆是否關閉
6.安裝JAVA執行環境
①正常顯示版本號則跳過下面步驟
java -version
②如果顯示如下,則表示還沒有安裝JAVA
③具體JDK的安裝可以參考
7.安裝JAVA的MySQL軟體包
apt-get install libmysql-java
8.只在hadoop-master中安裝MySQL(過程需要輸入MySQL的登入密碼)
①安裝MySQL
apt-get install mysql-server mysql-client
②測試是否安裝成功
mysql -uroot -p
③建立對應的庫以及使用者
create database hive DEFAULT CHARSET utf8;
create database rman DEFAULT CHARSET utf8;
create database oozie DEFAULT CHARSET utf8;
create database hue DEFAULT CHARSET utf8;
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY '123456';
grant all on rman.* TO 'rman'@'%' IDENTIFIED BY '123456';
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';
grant all on hue.* TO 'hue'@'%' IDENTIFIED BY '123456';
④成功後退出MySQL
quit
9.只在hadoop-master下載CDH相關檔案(由於版本的更新,版本號會不斷遞增),並進行設定
①在瀏覽器中輸入 http://archive.cloudera.com/cm5/cm/5/ 檢視到ubuntu對應最新版本
②在瀏覽器中輸入 http://archive.cloudera.com/cdh5/parcels/latest 檢視到ubuntu對應最新版本
③將上面的四個檔案都下載下來
wget -c http://archive.cloudera.com/cm5/cm/5/cloudera-manager-xenial-cm5.16.1_amd64.tar.gz
wget -c http://archive.cloudera.com/cdh5/parcels/latest/CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel
wget -c http://archive.cloudera.com/cdh5/parcels/latest/CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha1
wget -c http://archive.cloudera.com/cdh5/parcels/latest/manifest.json
④將CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha1檔案重新命名為CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha
mv CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha1 CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha
⑤在/opt中建立對應的資料夾結構(cm-5.16.1為當前版本號)
| --/opt
|--/cloudera
|--/parcels
|--/parcel-repo
|--/cm-5.16.1
cd /opt
mkdir cm-5.16.1
mkdir cloudera
cd cloudera
mkdir parcels
mkdir parcel-repo
⑥將CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel、CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha和manifest.json三個檔案拷貝到/opt/cloudera/parcel-repo中
cp CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha manifest.json /opt/cloudera/parcel-repo
⑦解壓cloudera-manager-xenial-cm5.16.1_amd64.tar.gz到/opt中
tar -zxf cloudera-manager-xenial-cm5.16.1_amd64.tar.gz -C /opt
⑧連結mysql
連線庫到cm
ln -s /usr/share/java/mysql-connector-java.jar /opt/cm-5.16.1/share/cmf/lib/mysql-connector-java.jar
⑨配置cm5
的資料庫
cd /opt/cm-5.16.1/share/cmf/schema
./scm_prepare_database.sh mysql -uroot -p你的MySQL密碼 scm scm scm --force
⑩修改配置檔案
vi /opt/cm-5.16.1/etc/cloudera-scm-agent/config.ini
# Hostname of the CM server.
server_host=hadoop-master #修改為主機名
⑪將cm-5.16.1複製到另外兩個節點
scp -r /opt/cm-5.16.1 hadoop-slave1:/opt/
scp -r /opt/cm-5.16.1 hadoop-slave2:/opt/
10.在所有節點啟動Server
和Agent
(建議先執行後面所有紅色操作重啟系統後再啟動程序,避免出現錯誤再處理的反覆折騰)
①啟動程序
cd /opt/cm-5.16.1/etc/init.d
./cloudera-scm-server start
./cloudera-scm-agent start
②如果報錯 install: invalid user ‘cloudera-scm’,則增加一個使用者
useradd --system --home=/opt/cm-5.16.1/run/cloudera-scm-server --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
③如果還報錯 Starting cloudera-scm-server: * Couldn't start cloudera-scm-server
則看log詳細報錯資訊進行對應處理
cd /opt/cm-5.16.1/log/cloudera-scm-server
cat cloudera-scm-server.out #server報錯
cd /opt/cm-5.16.1/log/cloudera-scm-agen
cat cloudera-scm-agent.out #agent報錯
比如agent的錯誤提示 /usr/bin/env: ‘python2.7’: No such file or directory 表示需要安裝python2.7
apt-get install python2.7
11.稍等一下(時間比較長,耐心等待),在瀏覽器中輸入 http://192.168.100.19:7180/cmf/login,並輸入使用者名稱和密碼(預設都是admin)
12.同意End User License Terms and Conditions
13.選擇試用版
14.感謝選擇CM和CDH
15.選擇所有主機安裝CDH叢集
16.選擇叢集安裝的方法和版本,其它選擇預設的None
17.等待三個節點安裝完畢(一開始會是紅色,慢慢安裝完成後變綠色)
18.監測叢集中三個節點的狀態
這裡需要設定vm.swappiness=10(設定完成後需要重啟!)
vi /etc/sysctl.conf
vm.swappiness=10 #在檔案最後增加一行
cat /proc/sys/vm/swappiness #檢視當前值
19.根據需要安裝對應的元件或者全部安裝
20.按需選擇DataNode的節點和其它配置
21.依次輸入表名、使用者名稱和密碼(和8③中保持一致),測試連線一切正常。
①錯誤1 : No database server found running on host hadoop-master.
解決辦法:將hadoop-master修改為localhost
②錯誤2:Unexpected error.Unable to verify database connection.
解決辦法:進入log裡面查詢原因
cd /opt/cm-5.16.1/log/cloudera-scm-server
tail cloudera-scm-server.log -n 50
③找到第一個Error:缺少了對應的mysqlclient庫
Error loading MySQLdb module: libmysqlclient.so.20: cannot open shared object file: No such file or directory
對應的解決辦法:
apt-cache search libmysql
apt-get install libmysql++-dev
④找到第二個Error:缺少對應的python庫
Error: libxslt.so.1: cannot open shared object file: No such file or directory
對應的解決辦法:缺少python的庫
apt-get install python-libxslt1
22.叢集配置的複核介面,保持預設值或者根據具體需求進行配置
23.開始執行叢集配置
報錯:Error: JAVA_HOME is not set and could not be found.
解決辦法:所有三個節點都重新設定JAVA的快鏈位置(下面的例子將/usr/local/java快捷方式到/usr/java)
mkdir /usr/java
ln -s /usr/local/java /usr/java/default
24.恭喜完成!
以上。