Centos7.4.1離線部署CDH5.14.2
一、注意事項
1. 所有步驟如無特別說明都是要在所有服務器上都執行一遍
2. 所有的準備工作都要做,不要漏了或者錯了,不然後面出現各種問題再改都是輕的,由此引發的其他的問題就嚴重多了
3. 所有操作均在root用戶下進行
4. 以下是Centos7以tar包形式安裝
5. 操作系統爲Centos7, 下載的對應Tar包是centos7的,parcels包是el7,否則版本不符合會有n多坑(請各位大俠勿跳)
在生產環境中,很多時候集羣管理者並沒有開放root權限給你來安裝CDH,這時候管理者只會開放部分權限,這時涉及這些已經開放的權限時,必須運用sudo執行。本文接下來先從root權限入手
二、軟件包下載地址
這裏下載的主要是CM Tar包離線安裝, 因爲後續安裝需要MySQL數據庫,所以後續需要下載Mysql的驅動Jar包,還需要下載Oracle的官方JDK1.7以上
- 再強調一遍,操作系統爲Centos7: 下載的對應Tar包是centos7的,parcels包是el7,否則版本不符合會有n多坑
- Cloudera ManagerTar包下載地址(選擇centos7的版本):Tar包下載地址
- CDH安裝包地址(下載對應的3個文件包):CDH parcels包下載地址
- jdbc驅動的MySQL下載地址:驅動下載
- Oracle JDK下載:下載地址
三、安裝步驟
1. 首先得安裝Centos7操作系統(安裝步驟略)
2.修改網絡配置和主機名(切換到root用戶下)
vi /etc/sysconfig/network
加上
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=gxqpt_cdh01
NTPSERVERARGS=iburst
3.修改網卡信息註釋IPV6相關信息
注意:cdh搭建需禁止ipv6(NETWORKING_IPV6 = no)
如果不禁止ipv6會導致通信產生問題,通信一有問題,各個進程可能掛掉,進程超時等問題
4、關閉防火牆和selinux,並設置開機關閉(所有節點)
1)關閉防火牆
查看防火前狀態: systemctl status firewalld
查看防火牆是否在運行:firewall-cmd --state
關閉防火牆: systemctl stop firewalld
禁用防火牆:systemctl disable firewalld
2)關閉selinux
vi /etc/sysconfig/selinux 修改SELINUX=disabled
5、修改主機域名映射:vi /etc/hosts(所有節點)
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.30.85 cdh01
192.168.30.86 cdh02
192.168.30.87 cdh03
6、windows電腦也添加域名映射,路徑是:
C:\Windows\System32\drivers\etc\hosts,修改和Linux主機名
192.168.30.85 cdh01
192.168.30.86 cdh02
192.168.30.87 cdh03
7、禁用IPV6
echo "#禁用IPv6 " >> /etc/modprobe.d/tuned.conf
echo "alias net-pf-10 off" >> /etc/modprobe.d/tuned.conf
echo "alias ipv6 off" >> /etc/modprobe.d/tuned.conf
查看是否追加成功 tail /etc/modprobe.d/tuned.conf
8、關閉透明大頁面(所有節點)
1) 臨時關閉透明大頁面(立即生效)
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
2) 永久關閉透明大頁面(重啓生效)
echo ' ' >> /etc/rc.local
echo '# 關閉大透明頁面' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
3)查看是否已經關閉
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled
9、修改swappiness
#臨時生效
sysctl -w vm.swappiness=10
重啓後永久修改
echo "vm.swappiness=10" >> /etc/sysctl.conf
10、修改好以後重啓系統
Reboot
11、打通ssh,設置無密碼登陸(所有節點)
1)生成祕鑰
執行ssh-keygen -t rsa,一路回車,生成無密碼的密鑰對。
2)複製公鑰:
cd ~/.ssh/
cp id_rsa.pub authorized_keys
# 下面的命令是把其他主機的公鑰複製到本機
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 53535 root@主機名
3)測試
這時候連接的時候需要加上端口號才能連接 ssh -p 53535 主機名
免密出現權限問題:
ssh登錄出現:permission denied(publickey.gssapi-with-mic)
解決方法:
修改/etc/ssh/sshd-config文件,將其中的:
PermitRootLogin no修改爲yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉
PasswordAuthentication no修改爲yes
最後重啓sshd服務即可!
12、操作系統語言統一採用英文版
# 查看操作系統系統語言
echo $LANG
# 修改操作系統系統語言
vim /etc/sysconfig/i18n
LANG="en_US.UTF-8"
四、JDK環境
CDH運行環境是Oracle的JDk1.7/1.8環境,需要卸載Centos系統自帶的jdk,安裝自己的JDK,下載OracleJDK需要注意的是JDK會有兩個版本(奇數版本和偶數版本,強烈推薦奇數版本,奇數版本是bug修復的版本),安裝CDH自帶JDK
1、卸載原有JDK
1)查看原有JDK
rpm -qa|grep java 查看已安裝的JDK信息
rpm –ga|grep gcj
2)卸載之
rpm -e --nodeps tzdata-java-2018e-3.el6.noarch java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 java-1.7.0-openjdk-1.7.0.181-2.6.14.10.el6.x86_64 java_cup-0.10k-5.el6.x86_64
2、安裝JDK
rpm -ivh jdk-8u201-linux-x64.rpm
3、驗證是否安裝成功
1)輸入java
2)javac
3)java -version
注意:其他機器也需要同樣的JDK環境
4、JDK安裝完成後配置環境變量
Vi /etc/profile編輯後加入jdk路徑信息,安裝的jdk路徑默認在/usr/java/目錄下
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=/usr/java/jdk1.8.0_201-amd64/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
5、source /etc/profile
四、Centos7安裝時間同步器保證時間同步ntp
Yum install –y ntp
啓動:systemctl start ntpd
開機啓動:chkconfig ntpd on
注:集羣必須保證時間同步,如果時間不同步後面安裝的組件會掛掉
五、卸載、安裝Mysql並創建表
1、卸載:
1)檢查mysql老版本
rpm -qa|grep -i mysql
2)停止mysqld服務
Service mysqld stop
3)刪除之前的mysql安裝包
rpm -e –-nodeps mysql 包名..
4)查找mysql相關文件目錄
find / -name mysql
將找到的文件夾或文件刪除
5)再次查看是否還有mysql安裝包
rpm -qa|grep -i mysql
6)如果有則刪之、無則安裝自己下載的mysql
2、安裝mysql
#注意:CentOS7 yum不再按照默認的MySQL了,而是使用MariaDB
1)安裝MariaDB
yum install -y mysql mysql-devel
yum install -y mariadb mariadb-server
2)啓動mariadb
systemctl start mariadb
3)修改密碼
/usr/bin/mysql_secure_installation
安裝好的mariadb初始密碼沒有設置的話是空,直接回車後就可以修改免密
4)、進行Mysql的密碼設置及其他基本配置 /usr/bin/mysql_secure_installation --user=mysql
5)登陸Mysql數據庫
mysql -uxxx -pxxx
6)添加遠程登陸權限
Grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
重新加載權限
7)flush privileges;
8) Window通過navicat遠程訪問連接成功
六、驅動jar包拷貝
1、將Mysql驅動包放入三臺服務器的Java 共享目錄下
mv mysql-connector-java-5.1.41.jar mysql-connector-java.jar
2、遠程拷貝到其他服務器上
scp /usr/share/java/ mysql-connector-java.jar cdh02: /usr/share/java/
scp /usr/share/java/ mysql-connector-java.jar cdh03: /usr/share/java/
3、必備數據庫 創建及授權
create database if not exists amon default charset utf8 collate utf8_general_ci;
create database if not exists rman default charset utf8 collate utf8_general_ci;
create database if not exists nav default charset utf8 collate utf8_general_ci;
create database if not exists navms default charset utf8 collate utf8_general_ci;
create database if not exists hue default charset utf8 collate utf8_general_ci;
create database if not exists sentry default charset utf8 collate utf8_general_ci;
create database if not exists cm default charset utf8 collate utf8_general_ci;
create database if not exists reports default charset utf8 collate utf8_general_ci;
create database if not exists hive;
create database if not exists oozie;
grant all on hive.* to 'hive'@'%' identified by 'hive' with grant option;
grant all on oozie.* to 'oozie'@'%' identified by 'oozie' with grant option;
grant all on hue.* to 'hue'@'%' identified by 'hue' with grant option;
grant all on amon.* to 'amon'@'%' identified by 'amon' with grant option;
grant all on rman.* to 'rman'@'%' identified by 'rman' with grant option;
grant all on nav.* to 'nav'@'%' identified by 'nav' with grant option;
grant all on navms.* to 'navms'@'%' identified by 'navms' with grant option;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry' with grant option;
grant all on reports.* to reports @'%' identified by 'reports' with grant option;
grant all on cm.* to 'cm'@'%' identified by 'cm' with grant option;
grant all on *.* to reports @'%' identified by '*' with grant option;
4、flush privileges;
七、安裝必備軟件
yum -y install psmisc
yum -y install libxslt
yum -y install screen
yum -y install telnet
yum -y install lrzsz
八 、安裝依賴
yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuselibs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL python fuse
九、安裝Cloudera Manager Server 和Agent
1、主節點解壓cloudera-manager安裝包到指定路徑/opt/下
tar -zxf cloudera-manager-el7-cm5.14.2_x86_64.tar.gz -C /opt/cloudera-manager
2、爲cloudera-manager創建數據庫
首先拷貝mysql驅動包放到/opt/cm-5.14.2/share/cmf/lib/中
cp ..()路徑/mysql-connector-java-5.1.44/mysql-connector-java-5.1.44-bin.jar /opt/cm-5.14.2/share/cmf/lib/
3、創建用戶
sudo useradd --system --home=/opt/cloudera-manager/cm-5.14.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
4、在主節點初始化數據庫
/opt/cloudera-manager/cm-5.14.2/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -p123456 --scm-host localhost scm root 123456
scm是初始化數據庫名稱,如果已經存在刪除或者更換名稱
5、Agent配置
修改主節點的主機名並同步到其他節點
修改配置文件
vim /opt/cloudera-manager/cm-5.14.2/etc/cloudera-scm-agent/config.ini
將serverhost = cdh02並同步
6、同步Agent到其他節點
scp –P 53535 –r /opt/cloudera-manager/cm-5.14.2 r cdh02:/opt/cloudera-manager
scp –P 53535 -r /opt/cloudera-manager/cm-5.14.2 cdh03:/opt/cloudera-manager
7、準備Parcels,用以安裝CDH5
將CHD5相關的Parcel包放到主節點的/opt/cloudera/parcel-repo/目錄中
這些包包括:
最後將CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1,重命名爲CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
注意:如果不重新命名,系統會重新下載CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1文件
8、啓動cloudera-scm-server和cloudera-scm-agent
啓動腳本:通過/opt/cm-5.14.2/etc/init.d/cloudera-scm-server start啓動服務端。
通過/opt/cm-5.14.2/etc/init.d/cloudera-scm-agent start啓動Agent服務。
上述啓動的其實是個service腳本,需要停止服務將以上的start參數改爲stop就可以了,重啓是restart
9、瀏覽器訪問
通過瀏覽器訪問7180端口,由於CM Server的啓動需要花點時間,這裏可能要等待一會才能訪問),默認的用戶名和密碼均爲admin
十、CDH5的安裝配置
Cloudera Manager Server和Agent都啓動以後,就可以進行CDH5的安裝配置了,
訪問7180端口進入頁面
點擊同意後進入頁面
繼續下一步,耐心等待羣集安裝
點擊繼續,這裏會有主機檢測,檢測全部通過纔可以進行下一步
十一、向服務管理平臺添加服務,添加服務一項一項添加,首先先添加zookeeper服務
Zookeeper安裝的節點數最好是奇數臺,至少3臺
至此Zookeeper添加並啓動成功
十二、添加hdfs服務,在主頁上點擊添加服務
1、選擇HDFS
2、檢測初始化和啓動
十三、添加yarn集羣
1、選擇服務
至此yarn添加成功
十四、添加spark服務
十五、添加hive服務
以後需要的服務一一添加即可,例添加Hive服務
注意:添加Hive服務需要將Mysql驅動包拷到以下目錄,否則會報驅動包找不到
/opt/cloudera-manager/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/lib/hive/lib
1、到CM主頁點擊添加服務選擇Hive添加:
2、輸入Mysql中數據庫Hive名稱,用戶名和密碼
等待配置都成功了服務就添加成功了!
以後需要添加的服務以此類推,需要數據庫在Mysql中創建相應的數據庫,並給數據庫授權,如果不需要的服務配置過程中按需分配!
另外需要注意的是:安裝CM配置CDH的時候服務需要一項一項的添加,如果一次性全部添加完會出現很多問題!
十六、CDH5.14.2添加Flume服務
選擇Flume服務
添加成功,等待啓動
十七、添加sqoop服務
最後將hive的執行引擎改爲spark,這樣運行速度會很快
十八、添加作業調度器oozie
十九、最後搭建好的集羣狀態(perfect!)
二十、問題小結
問題一:集羣中副本不足塊??
問題描述:
原因是設置的副本備份數與DataNode的個數不匹配。而dfs. replication屬性默認是3,也就是說副本數—塊的備份數默認爲3份。但是我們這裏集羣只有兩個DataNode。所以導致了達不到目標—副本備份不足!
解決辦法:
1、 設置目標備份數爲2
2、 通過命令更改當前備份數。
1、設置目標備份數爲2
點擊集羣-HDFS-配置,搜索dfs. replication,設置爲2後保存更改
dfs.replication這個參數其實只在文件被寫入dfs時起作用,雖然更改了配置文件,但是不會改變之前寫入的文件的備份數。
2、通過命令更改當前備份數
遠程連接上服務器
切換用戶:su hdfs
設置Datanode個數:hadoop fs –setrep –R 2 /
設置完後瀏覽器上刷新,這時hdfs狀態變綠了
參考文獻:https://blog.csdn.net/makai554892700/article/details/79984460
https://blog.csdn.net/zzq900503/article/details/53393721