Cloudera大數據平臺環境搭建(基於CentOS7的虛擬機環境)

1.基礎環境

1.1. 軟件環境

系統環境:CentOS-7-x86_64-Minimal-1804.iso,離線安裝CDH和Cloudera Manager過程,軟件版本如下:

NO. 軟件名稱 版本
1 操作系統 CentOS-7-x86_64-Minimal-1804.iso
2 JDK  
3 Clouder Manager  
4 CDH  
5 數據庫  
6 JDBC  

1.2. 配置規劃

本次安裝在7臺服務器上,服務器相關情況如下:

NO. 服務器

內網IP地址

配置 用途
1 node00 172.16.2.100   主節點,CM,Mysql
2 node01 172.16.2.112  
3 node02 172.16.2.129  
4 node03 172.16.2.134  
5 node04 172.16.2.144  
6 node05 172.16.2.159  
7 node06 172.16.2.161  

 

 

 

 

 

 

 

 

1.3.1 所需要的軟件資源:

  1. JDK環境:

JDK版本:1.8.0_151

jdk-8u151-linux-x64.rpm

下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

  1. CM包:

CM版本:5.13.1

cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz

下載地址:http://archive-primary.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz

 

  1. CDH

CDH版本:5.13.1,

CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel;

CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1;

manifest.json

下載地址:

http://archive-primary.cloudera.com/cdh5/parcels/5.13.1/manifest.json

http://archive-primary.cloudera.com/cdh5/parcels/5.13.1/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1

http://archive-primary.cloudera.com/cdh5/parcels/5.13.1/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel

  1. JDBC連接jar包:

jar包版本:5.1.43,

 mysql-connector-java-5.1.43.jar

下載地址:http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.43/mysql-connector-java-5.1.43.jar

1.4. 修改服務器名稱(所有的節點)

#查看服務器名稱

hostname

#修改服務器名稱

vi /etc/hostname

#或者下面這種方式

hostnamectl set-hostname xxx

#修改hosts配置文件

vi /etc/hosts

127.0.0.1 localhost //建議保留這行

1.5. 設置服務器防火牆

#查看防火牆狀態
firewall-cmd --state
#開啓防火牆
systemctl start firewalld.service
#關閉防火牆
systemctl stop firewalld.service
#禁止防火漆開機啓動
systemctl disable firewalld.service

設置防火牆策略,在所有節點執行下面腳本(執行前要啓動防火牆):
//集羣機器間可以相互訪問
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='node00' port protocol='tcp' port='0-65535' accept"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='node01' port protocol='tcp' port='0-65535' accept"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='node02' port protocol='tcp' port='0-65535' accept"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='node03' port protocol='tcp' port='0-65535' accept"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='node04' port protocol='tcp' port='0-65535' accept" 
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='node05' port protocol='tcp' port='0-65535' accept" 
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='node06' port protocol='tcp' port='0-65535' accept" 
//設置可以訪問的端口
firewall-cmd --permanent --add-port=0-65535/tcp
firewall-cmd --reload
注意: 需要在所有的節點上執行,因爲涉及到的端口太多了,臨時開放所有端口是爲了安裝起來方便,安裝完畢後可以根據需要設置防火牆策略,保證集羣安全。

1.6.  配置免密登錄SSH

#cd ~/.ssh
#ssh-keygen -t rsa 
#三次回車鍵之後會生成無密碼的鑰匙對
#拷貝公鑰至各個節點實現免密登錄
#ssh-copy-id root@node00
#下面根據提示配置完成yes和節點密碼

1.7. 關閉SELIUX(在所有的節點上面)

#查看是否關閉SELINUX
sestatus
#臨時生效
setenforce 0
#永久生效
vi /etc/selinux/config
SELINUX=disabled
#需要重啓才能生效,這一步暫時不用重啓,後面的步驟也需要重啓

1.8. 修改Linux內核參數(所有的節點)

爲避免安裝過程中出現的異常問題,首先調整Linux內核參數。

================================================================
1)	設置swappiness,控制換出運行時內存的相對權重,Cloudera 建議將 swappiness 設置爲 10:
//查看swappiness
# cat /proc/sys/vm/swappiness
//永久性修改,執行下面兩條命令
# sysctl -w vm.swappiness=10
# echo vm.swappiness = 10 >> /etc/sysctl.conf 

=================================================================

2)	關閉透明大頁面:
自CentOS6版本開始引入了Transparent Huge Pages(THP),從CentOS7版本開始,該特性默認就會啓用。儘管THP的本意是爲提升內存的性能,不過某些數據庫廠商還是建議直接關閉THP,否則可能會導致性能出現下降。
首先查看透明大頁是否啓用,[always] never表示已啓用,always [never]表示已禁用:
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
以上狀態就說明是啓用的。
臨時關閉(重啓機器會變回默認開啓狀態):
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
#echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久關閉:
//編輯/etc/rc.d/rc.local
# vi /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

保存退出,然後賦予rc.local文件執行權限:
#chmod +x /etc/rc.d/rc.local
重啓系統,以後再檢查THP狀態,顯示狀態被禁用了。
===============================================================
3)	修改文件句柄數:
修改系統文件句柄數限制:
//查看文件句柄數,顯示1024,顯然太小
# ulimit -n 
1024
//修改限制
#vi /etc/security/limits.conf 
//在文件後加入下面內容:

* soft nofile 100000
* hard nofile 100000

修改後需要重啓機器。

1.9. 其他安裝與配置(所有的節點)

爲避免安裝過程中出現異常問題,安裝相關依賴包:
# yum  -y  install psmisc MySQL-python at bc bind-libs bind-utils cups-client cups-libs cyrus-sasl-gssapi cyrus-sasl-plain ed fuse fuse-libs httpd httpd-tools keyutils-libs-devel krb5-devel libcom_err-devel libselinux-devel libsepol-devel libverto-devel mailcap noarch mailx mod_ssl openssl-devel pcre-devel postgresql-libs python-psycopg2 redhat-lsb-core redhat-lsb-submod-security  x86_64 spax time zlib-devel
#yum install -y python-lxml
#yum install krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel

# chmod +x /etc/rc.d/rc.local
# yum -y install rpcbind
# systemctl start rpcbind
# echo "systemctl start rpcbind" >> /etc/rc.d/rc.local

1.10. 配置NTP服務

集羣中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。 具體建設過程如下:
所有節點安裝相關組件:
# yum install  ntp  ntpdate  -y
NTP服務端(主節點):
1)	查找時間同步服務器http://www.pool.ntp.org/zone/asia:

2)	編輯 /etc/ntp.conf:
# vi /etc/ntp.conf
//在文件中輸入上面網頁內容:

server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

3)	啓動ntp服務:
# systemctl start  ntpd
4)	配置開機啓動:
# systemctl enable  ntpd.service  
注意:如果ntpd 開機啓動失效,有可能是因爲安裝了chronyd 並且是開機自啓狀態,所以導致ntpd開機自啓失敗。

# 查看  chronyd設置狀態
# systemctl status chronyd

將chronyd設爲禁用狀態:
# systemctl disable chronyd.service
此時,NTP的服務開機自啓動完成! 
5)	檢查是否設置成功:
# ntpq  -p
//更新時間
#timedatectl 

NTP客戶端(所有從節點):
6)	遠程客戶端時間同步測試
# date
# ntpdate 172.16.3.168
	172.16.3.168是NTP服務端IP,顯示如下信息,測試成功:
 
7)	客戶端設置計劃任務,每30分鐘同步時間
#crontab -e 
//加入內容:
0-59/30 * * * * /usr/sbin/ntpdate 172.16.3.168 && /sbin/hwclock -w
8)	設置定時任務開機啓動
//設置開機啓動
# systemctl enable crond.service

//查看狀態
# systemctl status crond


1.11. 安裝jdk8

下載rpm 安裝包jdk-8u151-linux-x64.rpm 

CentOS系統一般自帶OpenJdk,需要卸載掉自帶的OpenJdk

# rpm -qa | grep java

查詢java相關的包

# rpm -e –nodeps +包名

強制卸載掉,下面安裝oralce JDK

# rpm -ivh jdk-8u151-linux-x64.rpm

配置JAVA_HOME環境變量:

修改/etc/profile文件配置環境變量,  執行命令:
# vi /etc/profile   
在profile文件最後,輸入下面內容,保存並退出。
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin 
執行下面命令,讓配置生效
# source /etc/profile   //使修改立即生效
# echo $PATH   //查看PATH值
# echo $JAVA_HOME   //查看JAVA_HOME值
	在Centos7中修改/etc/profile文件配置環境變量,機器啓動後有時不生效,可以修改/etc/ bashrc文件配置環境變量:
# vi /etc/bashrc 
//在文件最後加入:
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin 
//使修改立即生效
# source /etc/bashrc 
//查看JAVA_HOME值
# echo $JAVA_HOME  

1.12. Mysql的安裝(僅主節點)

如果安裝時出現問題可根據提示修改,rpm安裝時可 --nodeps(忽略關聯包) --force(強制安裝)

到官網https://dev.mysql.com/downloads/file/?id=469456選擇對應安裝包:
1)	下載安裝包
#wget https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
2)	解壓安裝包
# tar -xvf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
//解壓後文件列表:
mysql-community-embedded-devel-5.7.18-1.el7.x86_64.rpm
mysql-community-devel-5.7.18-1.el7.x86_64.rpm
mysql-community-client-5.7.18-1.el7.x86_64.rpm
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-embedded-5.7.18-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.18-1.el7.x86_64.rpm
mysql-community-test-5.7.18-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm
3)	按次序安裝
按common–>libs–>client–>server的順序安裝:
# rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
# rpm -ivh mysql-community-devel-5.7.18-1.el7.x86_64.rpm 

//安裝下面包,否則Hue安裝報連接錯誤
# rpm -ivh  mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm
	
4)	啓動數據庫
# systemctl start mysqld 
查看狀態: 
# systemctl status mysqld
	
5)	修改MySQL初始密碼
1、先修改配置文件/etc/my.cnf令MySQL跳過登錄時的權限檢驗,在[mysqld]下加入一行:
skip-grant-tables
2、重啓MySQL
#service mysqld restart
3、免密碼登錄MySQL。
#mysql
4、mysql客戶端執行如下命令,修改root密碼
mysql>  use mysql;
mysql> UPDATE user SET authentication_string = password('your-password') WHERE host = 'localhost' AND user = 'root';
mysql> select host,user, authentication_string, password_expired from user; 
mysql> update user set password_expired='N' where password_expired='Y' //密碼不過期
mysql> update user set host='%' where user='root' and host='localhost'; //遠程可訪問
mysql> flush privileges; //刷新
mysql> exit;//退出

5、修改配置文件/etc/my.cnf刪除此前新增那一行skip-grant-tables,並重啓MySQL(這一步非常重要,不執行可能導致嚴重的安全問題)
#service mysqld restart //重啓 Mysql
 

2. 安裝CM

2.1. 上傳包和解包

在主節點上下載相關軟件包,這裏將軟件包下載到/data/ cdh/目錄下。
#cd /data/cdh
下載Mysql JDBC包:
#wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.43/mysql-connector-java-5.1.43.jar
下載CM:
#wget http://archive-primary.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz 
下載CDH:
#wget http://archive-primary.cloudera.com/cdh5/parcels/5.13.1/manifest.json
#wget http://archive-primary.cloudera.com/cdh5/parcels/5.13.1/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1
#wget http://archive-primary.cloudera.com/cdh5/parcels/5.13.1/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel
將CM解壓到/opt/目錄:
# tar -zxvf cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz  -C /opt/
# ls /opt/
cloudera  cm-5.13.1

2.2. 創建數據庫

在主節點上:
# mysql -h127.0.0.1 -uroot -p   //加參數-h127.0.0.1 指定本機方式,否則可能不允許執行grant
Enter password:          \\輸入數據庫密碼
//在MariaDB [(none)]>命令狀態輸入下面腳本:
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
grant all privileges on *.* to root@localhost identified by 'root' with grant option;
grant all on *.* to root@"%" Identified by "root";
flush privileges;
exit;
//複製Mysql JDBC包到/opt/cm-5.13.1/share/cmf/lib/目錄
#cp mysql-connector-java-5.1.43-bin.jar /opt/cm-5.13.1/share/cmf/lib/
//初始化CM,執行下面腳本
# /opt/cm-5.13.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode168 -uroot -proot --scm-host node168 scm scm scm
//如果出現下面錯誤:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
//解決辦法:
在/etc/hosts 文件中,加上
127.0.0.1 localhost.node168

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章