0470-如何在Redhat7.4安裝CDH5.16.1
Fayson的github: https://github.com/fayson/cdhproject
推薦關註微信公眾號:“Hadoop實操”,ID:gh_c4c535955d0f,或者掃描文末二維碼。
1.文章編寫目的
Cloudera在2018年11月29日發布了CDH5.16.1,新功能介紹可以參考Fayson之前的文章《0466-CDH5.16.1和CM5.16.1的新功能》。本文檔主要描述如何在Redhat7.4安裝CDH5.16.1。Cloudera大數據平臺的安裝主要分為4個步驟:
1.集群服務器配置,包括安裝操作系統、關閉防火墻、同步服務器時鐘等,又稱為集群安裝的前置準備,關於更多前置條件準備也可以參考Fayson之前的的文檔《CDH安裝前置準備》;
2.安裝Cloudera Manager;
3.通過Cloudera Manager的Web UI向導式安裝CDH集群;
4.集群完整性檢查,包括HDFS文件系統、MapReduce、Hive等是否可以正常運行。
本文操作說明基於以下假設:
1.操作系統版本:Redhat7.4
2.CDH和CM版本均為5.16.1
3.采用root對集群進行部署
4.您已經下載CDH和CM的安裝包
2.前置準備
2.1.hostname及hosts配置
集群中各個節點之間能互相通信使用靜態IP地址。IP地址和主機名通過/etc/hosts配置,主機名通過/etc/hostname進行配置。
以cm節點(172.31.13.38)為例:
- hostname配置
/etc/hostname文件如下:
ip-172-31-13-38.ap-southeast-1.compute.internal
或者你可以通過命令修改立即生效
[root@ip-172-31-13-38 ~]$ hostnamectl set-hostname ip-172-31-13-38.ap-southeast-1.compute.internal
<font face="微軟雅黑" size=4 color=red >註意:這裏修改hostname跟REDHAT6的區別
- hosts配置
/etc/hosts文件如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.31.13.38 ip-172-31-13-38.ap-southeast-1.compute.internal 172.31.11.232 ip-172-31-11-232.ap-southeast-1.compute.internal 172.31.11.9 ip-172-31-11-9.ap-southeast-1.compute.internal 172.31.13.166 ip-172-31-13-166.ap-southeast-1.compute.internal
以上兩步操作,在集群中其它節點做相應配置。確認需要安裝的4臺主機的hosts文件:
2.2.禁用SELinux
在所有節點執行setenforce 0 命令,此處使用批處理shell執行:
[root@ip-172-31-13-38 ~]$ sh ssh_do_all.sh node.list "setenforce 0"
集群所有節點修改/etc/selinux/config文件如下:
SELINUX=disabled
SELINUXTYPE=targeted
檢查所有機器是否已修改成功:
sh ssh_do_all.sh node.list "cat /etc/selinux/config | grep SELINUX"
2.3.關閉防火墻
集群所有節點執行systemctl stop firewalld命令,此處通過shell批量執行命令如下:
[root@ip-172-31-13-38 ~]$ sh ssh_do_all.sh node.list "systemctl stop firewalld"
[root@ip-172-31-13-38 ~]$ sh ssh_do_all.sh node.list "systemctl disable firewalld"
[root@ip-172-31-13-38 ~]$ sh ssh_do_all.sh node.list "systemctl status firewalld"
2.4.集群時鐘同步
在Redhat7.x的操作系統上,已經默認的安裝了chrony,我們這裏先卸載chrony,然後安裝ntp。使用ntp來配置各臺機器的時鐘同步,將cm(172.31.13.38)服務作為本地ntp服務器,其它3臺服務器與其保持同步。
1.所有機器卸載chrony
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "yum -y remove chrony"
2.所有機器安裝ntp
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "yum -y install ntp"
3.cm機器配置時鐘與自己同步
[root@ip-172-31-16-68 shell]# vim /etc/ntp.conf
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
4.集群其它節點,配置找cm機器去同步
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 172.31.13.38
5.重啟所有機器的ntp服務
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "systemctl restart ntpd"
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "systemctl status ntpd"
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "systemctl enable ntpd"
6.驗證始終同步,在所有節點執行ntpq -p命令,如下使用腳本批量執行
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "ntpq -p"
左邊出現*號表示同步成功。
2.5.設置swap
所有節點執行
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "echo vm.swappiness = 10 >> /etc/sysctl.conf"
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "sysctl vm.swappiness=10"
2.6.設置透明大頁面
所有節點執行:
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "echo never > /sys/kernel/mm/transparent_hugepage/defrag "
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
設置開機自關閉
將如下腳本添加到/etc/rc.d/rc.local文件中
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
同步到所有節點
2.7.配置操作系統repo
<font face="微軟雅黑" size=4 color=red >Fayson用的是AWS的環境,這步是可以省略的,放在這裏供物理機部署的兄弟們參考。
- 掛載操作系統iso文件
[root@ip-172-31-2-159 ~]$ sudo mkdir /media/DVD1
[root@ip-172-31-2-159 ~]$ sudo mount -o loop
CentOS-7-x86_64-DVD-1611.iso /media/DVD1/
- 配置操作系統repo
[root@ip-172-31-2-159 ~]$ sudo vim /etc/yum.repos.d/local_os.repo
[local_iso]
name=CentOS-$releasever - Media
baseurl=file:///media/DVD1
gpgcheck=0
enabled=1
[root@ip-172-31-2-159 ~]$ sudo yum repolist
2.8.安裝http服務
- 安裝httpd服務
[root@ip-172-31-2-159 ~]$ yum -y install httpd
- 啟動或停止httpd服務
[root@ip-172-31-2-159 ~]$ systemctl start httpd
[root@ip-172-31-2-159 ~]$ systemctl stop httpd
- 安裝完httpd後,重新制作操作系統repo,換成http的方式方便其它服務器也可以訪問
[root@ip-172-31-2-159 ~]$ sudo mkdir /var/www/html/iso
[root@ip-172-31-2-159 ~]$ sudo scp -r /media/DVD1/* /var/www/html/iso/
[root@ip-172-31-2-159 ~]$ sudo vim /etc/yum.repos.d/os.repo
[osrepo]
name=os_repo
baseurl=http://172.31.2.159/iso/
enabled=true
gpgcheck=false
[root@ip-172-31-2-159 ~]$ sudo yum repolist
2.9.安裝MariaDB
1.安裝MariaDB
[root@ip-172-31-13-38 ~]# yum -y install mariadb
[root@ip-172-31-13-38 ~]# yum -y install mariadb-server
2.啟動並配置MariaDB
[root@ip-172-31-13-38 ~]# systemctl start mariadb
[root@ip-172-31-13-38 ~]# systemctl enable mariadb
[root@ip-172-31-13-38 ~]# /usr/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we‘ll need the current
password for the root user. If you‘ve just installed MariaDB, and
you haven‘t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from ‘localhost‘. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n
... skipping.
By default, MariaDB comes with a database named ‘test‘ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you‘ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
3.建立CM,Hive等需要的表
[root@ip-172-31-13-38 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]>
create database metastore default character set utf8; CREATE USER ‘hive‘@‘%‘ IDENTIFIED BY ‘password‘; GRANT ALL PRIVILEGES ON metastore. * TO ‘hive‘@‘%‘; FLUSH PRIVILEGES; create database cm default character set utf8; CREATE USER ‘cm‘@‘%‘ IDENTIFIED BY ‘password‘; GRANT ALL PRIVILEGES ON cm. * TO ‘cm‘@‘%‘; FLUSH PRIVILEGES; create database am default character set utf8; CREATE USER ‘am‘@‘%‘ IDENTIFIED BY ‘password‘; GRANT ALL PRIVILEGES ON am. * TO ‘am‘@‘%‘; FLUSH PRIVILEGES; create database rm default character set utf8; CREATE USER ‘rm‘@‘%‘ IDENTIFIED BY ‘password‘; GRANT ALL PRIVILEGES ON rm. * TO ‘rm‘@‘%‘; FLUSH PRIVILEGES;
create database hue default character set utf8; CREATE USER ‘hue‘@‘%‘ IDENTIFIED BY ‘password‘; GRANT ALL PRIVILEGES ON hue. * TO ‘hue‘@‘%‘; FLUSH PRIVILEGES;
create database oozie default character set utf8; CREATE USER ‘oozie‘@‘%‘ IDENTIFIED BY ‘password‘; GRANT ALL PRIVILEGES ON oozie. * TO ‘oozie‘@‘%‘; FLUSH PRIVILEGES;
create database sentry default character set utf8; CREATE USER ‘sentry‘@‘%‘ IDENTIFIED BY ‘password‘; GRANT ALL PRIVILEGES ON sentry. * TO ‘sentry‘@‘%‘; FLUSH PRIVILEGES;
create database nav_ms default character set utf8; CREATE USER ‘nav_ms‘@‘%‘ IDENTIFIED BY ‘password‘; GRANT ALL PRIVILEGES ON nav_ms. * TO ‘nav_ms‘@‘%‘; FLUSH PRIVILEGES;
create database nav_as default character set utf8;
CREATE USER ‘nav_as‘@‘%‘ IDENTIFIED BY ‘password‘;
GRANT ALL PRIVILEGES ON nav_as. * TO ‘nav_as‘@‘%‘;
FLUSH PRIVILEGES;
- 安裝jdbc驅動
[root@ip-172-31-13-38 ~]# mkdir -p /usr/share/java/
[root@ip-172-31-13-38 ~]# mv mysql-connector-java-5.1.34.jar /usr/share/java/
[root@ip-172-31-13-38 ~]# cd /usr/share/java
[root@ip-172-31-13-38 java]# ln -s mysql-connector-java-5.1.34.jar mysql-connector-java.jar
[root@ip-172-31-13-38 java]# ll
total 940
-rwxrwxr-x. 1 root root 960372 Feb 1 08:31 mysql-connector-java-5.1.34.jar
lrwxrwxrwx 1 root root 31 Feb 2 00:52 mysql-connector-java.jar -> mysql-connector-java-5.1.34.jar
3.Cloudera Manager安裝
3.1.配置本地repo源
1.下載CM5.16.1的安裝包,地址為:
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/cloudera-manager-agent-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/cloudera-manager-server-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/cloudera-manager-server-db-2-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/enterprise-debuginfo-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/jdk-6u31-linux-amd64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
2.下載CDH5.16.1的安裝包,地址為:
http://archive.cloudera.com/cdh5/parcels/5.16.1/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
http://archive.cloudera.com/cdh5/parcels/5.16.1/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1
http://archive.cloudera.com/cdh5/parcels/5.16.1/manifest.json
3.將Cloudera Manager安裝需要的7個rpm包下載到本地,放在同一目錄,執行createrepo命令生成rpm元數據。
[root@ip-172-31-13-38 cm5.16.1]# ll
total 1019160
-rw-r--r-- 1 root root 9864584 Nov 27 14:40 cloudera-manager-agent-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
-rw-r--r-- 1 root root 789872988 Nov 27 14:40 cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
-rw-r--r-- 1 root root 8704 Nov 27 14:40 cloudera-manager-server-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
-rw-r--r-- 1 root root 10612 Nov 27 14:40 cloudera-manager-server-db-2-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
-rw-r--r-- 1 root root 30604172 Nov 27 14:40 enterprise-debuginfo-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
-rw-r--r-- 1 root root 71204325 Nov 27 14:40 jdk-6u31-linux-amd64.rpm
-rw-r--r-- 1 root root 142039186 Nov 27 14:40 oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
[root@ip-172-31-13-38 cm5.16.1]# createrepo .
Spawning worker 0 with 2 pkgs
Spawning worker 1 with 2 pkgs
Spawning worker 2 with 2 pkgs
Spawning worker 3 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
4.配置Web服務器
將上述cdh5.16.1/cm5.16.1目錄移動到/var/www/html目錄下, 使得用戶可以通過HTTP訪問這些rpm包。
[root@ip-172-31-13-38 ~]# mv cm5.16.1/ cdh5.16.1/ /var/www/html/
驗證瀏覽器能否正常訪問
5.制作Cloudera Manager的repo源
[root@ip-172-31-13-38 ~]# vim /etc/yum.repos.d/cm.repo
[cmrepo]
name = cm_repo
baseurl = http://172.31.13.38/cm5.16.1
enable = true
gpgcheck = false
[root@ip-172-31-13-38 yum.repos.d]# yum repolist
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
repo id repo name status
cmrepo cm_repo 7
rhui-REGION-client-config-server-7/x86_64 Red Hat Update Infrastructure 2.0 Client C 1
rhui-REGION-rhel-server-releases/7Server/x86_64 Red Hat Enterprise Linux Server 7 (RPMs) 20,668
rhui-REGION-rhel-server-rh-common/7Server/x86_64 Red Hat Enterprise Linux Server 7 RH Commo 233
repolist: 20,909
6.驗證安裝JDK
yum -y install oracle-j2sdk1.7-1.7.0+update67-1
3.2.安裝Cloudera Manager Server
1.通過yum安裝Cloudera Manager Server
yum -y install cloudera-manager-server
2.初始化數據庫
[root@ip-172-31-13-38 yum.repos.d]# /usr/share/cmf/schema/scm_prepare_database.sh mysql cm cm password
JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing: /usr/java/jdk1.7.0_67-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/usr/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
[ main] DbCommandExecutor INFO Successfully connected to database.
All done, your SCM database is configured correctly!
3.啟動Cloudera Manager Server
[root@ip-172-31-13-38 ~]# systemctl start cloudera-scm-server
4.檢查端口是否監聽
[root@ip-172-31-13-38 ~]# netstat -lnpt | grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 3331/java
5.通過http://13.250.14.115:7180/cmf/login訪問CM
4.CDH安裝
4.1.CDH集群安裝向導
1.admin/admin登錄到CM
2.同意license協議,點擊繼續
3.選擇60試用,點擊繼續
4.點擊“繼續”
5.輸入主機ip或者名稱,點擊搜索找到主機後點擊繼續
6.點擊“繼續”
註意這裏列出來的CDH版本都是系統最開始默認的,來自於Cloudera公網的下載源倉庫,這裏我們需要先將CDH的安裝源修改一下。
7.使用parcel選擇,點擊“更多選項”,點擊“-”刪除其它所有地址,輸入
http://172.31.13.38/cdh5.16.1,點擊“保存更改”
保存更改後,這時回到上個頁面會看到我們之前準備好的http的CDH5.16.1的源,如果顯示不出來,可能http源配置有問題,請參考前面步驟仔細進行檢查。
8.選擇自定義存儲庫,輸入cm的http地址
9.點擊“繼續”,進入下一步安裝jdk
10.點擊“繼續”,進入下一步,默認多用戶模式,不需要進行任何勾選
11.點擊“繼續”,進入下一步配置ssh賬號密碼
12.點擊“繼續”,進入下一步,安裝Cloudera Manager相關到各個節點
13.點擊“繼續”,進入下一步安裝cdh到各個節點
14.點擊“繼續”,進入下一步主機檢查,確保所有檢查項均通過
點擊完成進入服務安裝向導。
4.2.集群設置安裝向導
1.選擇需要安裝的服務
2.點擊“繼續”,進入集群角色分配
3.點擊“繼續”,進入下一步,測試數據庫連接
4.測試成功,點擊“繼續”,進入目錄設置,此處使用默認默認目錄,根據實際情況進行目錄修改
5.點擊“繼續”,進入各個服務啟動
6.安裝成功
7.安裝成功後進入CM管理界面主頁
5.Kudu安裝
CDH從5.13開始,直接打包Kudu,不再需要下載額外的Parcel和csd文件。CDH5.13集成的是Kudu1.5,CDH5.16.1集成的是Kudu1.7。
1.通過CM安裝Kudu1.7
添加Kudu服務
2.選擇Master和Tablet Server
3.配置相應的目錄,註:無論是Master還是Tablet根據實際情況數據目錄(fs_data_dir)應該都可能有多個,以提高並發讀寫,從而提高Kudu性能。
4.啟動Kudu服務
5.安裝完畢
6.配置Impala
回到主頁重啟Impala和Hue
至此,CDH5.16.1+Kudu1.7安裝完畢。
因為微信單篇文章字數限制,Fayson這裏省略了快速組件驗證章節。你可以參考Fayson以前的文章。
《CENTOS7.2安裝CDH5.10和Kudu1.2(一)》
《CENTOS7.2安裝CDH5.10和Kudu1.2(二)》
《CENTOS6.5安裝CDH5.12.1(一)》
《CENTOS6.5安裝CDH5.12.1(二)》
《CDH安裝前置準備》
《CentOS6.5安裝CDH5.13》
為天地立心,為生民立命,為往聖繼絕學,為萬世開太平。
推薦關註Hadoop實操,第一時間,分享更多Hadoop幹貨,歡迎轉發和分享。
原創文章,歡迎轉載,轉載請註明:轉載自微信公眾號Hadoop實操
<div align=center><img src="https://img-blog.csdnimg.cn/20181124184403645.png"/></div>
0470-如何在Redhat7.4安裝CDH5.16.1