糾結了好久,還是花錢了3個4核8G的阿里雲主機,且行且珍惜,想必手動搭建過Hadoop集群的完全分布式、HBase的完全分布式的你(當然包括我,哈哈),一定會抱怨如此多的配置,而此時CDH正是解決我們煩惱的時候。
下面安裝過程比較長,所以一定要有耐心。
一、CDH介紹
以下是官網給的介紹:個人感覺就是對hadoop環境的封裝
二、為什么選擇CDH?
Cloudera 常年堅持季度發型update版本,年度發行Release版本,更新速度比Aapche官方快,而且在實際使用過程中CDH表現無比穩定。
CDH支持yum/apt包,tar包,rpm包,cloudera manager四種方式安裝。可以獲取最新特性和最新Bug修復,安裝維護方便,節省運維時間。另外集群搭建更加方便。
• 版本划分清晰
• 版本更新速度快
• 支持Kerberos安全認證
• 文檔清晰
• 支持多種安裝方式(Cloudera Manager方式)
三、CDH的版本選擇
CDH4.x--->4.8.6
CDH5.x :優選5.4.8 5.8.0 5.12.0 不建議選擇5.11.0,有坑(這里我選用5.10.0)
四、安裝准備
1.節點准備
由於是個人測試環境,所以購買了3台阿里雲的主機,主要配置如下:
2.節點規划
hadoop001:mysql cm-server cm-agent Namenode DataNode ResourceManager NodeManager ZK
hadoop002:cm-agent Datanode SecondaryNameNode NameNode ZK
hadoop003:cm-agent DataNode NodeManager ZK
3.下載parcels文件
地址:http://archive.cloudera.com/cdh5/parcels/
選擇5.10.0:http://archive.cloudera.com/cdh5/parcels/5.10.0/
下載以下三個內容:
①http://archive.cloudera.com/cdh5/parcels/5.10.0/CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel
②http://archive.cloudera.com/cdh5/parcels/5.10.0/CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha1
③http://archive.cloudera.com/cdh5/parcels/5.10.0/manifest.json
4.tarball下載
地址:http://archive.cloudera.com/cm5/repo-as-tarball
選擇5.10.0:http://archive.cloudera.com/cm5/repo-as-tarball/5.10.0/
下載:http://archive.cloudera.com/cm5/repo-as-tarball/5.10.0/cm5.10.0-centos6.tar.gz
5.准備以下內容:
五、系統初始化
1.關閉防火牆(3個節點)
臨時關閉:service iptables stop 驗證:service iptables status
永久關閉:chkconfig iptables off 驗證:chkconfig --list | grep iptable
2.配置主機名(3個節點)
執行命令:vim /etc/sysconfig/network
修改完成以后重啟:reboot
3.修改hosts文件(3個節點)
執行命令:vim /etc/hosts
添加以下內容(3個節點的內容一致),這里是我使用的是內網ip
4.配置免密登錄(3個節點)
執行命令:ssh-keygen
執行命令: ssh-copy-id root@hadoop01、 ssh-copy-id root@hadoop02、 ssh-copy-id root@hadoop03
5.安裝JDK(3個節點)
我這里本地已經下載好文件:通過rz命令本地上傳(yum install lrzsz)
注意:JDK的安裝目錄一定是/usr/java,否則CDH啟動失敗!!!!!!(鄙人走過的坑)
解壓命令:
[root@hadoop03 java]# tar -xvf jdk-8u181-linux-x64.tar.gz
配置環境變量:
[root@ java]# vim /etc/profile
配置以下內容:
#jdk的環境變量配置
export JAVA_HOME=/usr/java/jdk1.8.0_181 //這里的路徑一定是/usr/java,否則CDH啟動失敗!!!!!!
export PATH=.:$JAVA_HOME/bin:$PATH
執行命令使配置文件生效:[root@hadoop03 java]# source /etc/profile
通過scp命令將JDK的壓縮包發給其他節點:[root@hadoop03 java]# scp jdk-8u181-linux-x64.tar.gz root@hadoop01:/usr/java/
最后通過:java -version命令查看JDK是否安裝成功。
6.檢查Python版本(3個節點)
執行命令:python --version
注:建議是2.6.6,如果使用的cdh版本是4.x,使用2.7.x版本的python會造成hdfs的ha不兼容
虛擬機如果用的是centos7.x的話,要用python7.x的版本
7.檢查服務器之間的時間是否同步(3個節點)
執行命令:grep ZONE /etc/sysconfig/clock(應該都是上海時間)
六、安裝mysql(hadoop01節點)
1、安裝並解壓
這里數據庫的版本是mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz,將mysql安裝包上傳到服務器,或者從官網上下載mysql安裝包.
解壓mysql安裝包:tar xzvf mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
解壓完畢之后,將解壓后的目錄移動到/usr/local目錄下(固定目錄),並改名為mysql:mv mysql-5.6.23-linux-glibc2.5-x86_64 /usr/local/mysql
2、改變mysql的用戶組
將mysql添加到mysqladmin的dba用戶組里,執行以下命令:
[root@hadoop01 software]# cd ~
[root@hadoop01 ~]# groupadd -g 101 dba
[root@hadoop01 ~]# useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
[root@hadoop01 ~]# id mysqladmin(查看用戶)
[root@hadoop01 ~]# passwd mysqladmin(修改密碼)
3、將環境變量配置文件拷貝到mysqladmin用戶的home目錄下
執行命令:cp /etc/skel/.* /usr/local/mysql
4、創建mysql的配置文件
執行以下命令:
[root@hadoop01 ~]# cd /etc/
[root@hadoop01 etc]# vim my.cnf
進入到my.cnf文件之后,將里面的全部內容刪除,之后將以下的配置拷貝到my.cnf中:
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
[mysqld]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-external-locking
key_buffer_size = 256M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
query_cache_size= 32M
max_allowed_packet = 16M
myisam_sort_buffer_size=128M
tmp_table_size=32M
table_open_cache = 512
thread_cache_size = 8
wait_timeout = 86400
interactive_timeout = 86400
max_connections = 600
thread_concurrency = 32
default-storage-engine = INNODB
transaction-isolation = READ-COMMITTED
server-id = 1
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/hostname.pid
log-warnings
sysdate-is-now
binlog_format = MIXED
log_bin_trust_function_creators=1
log-error = /usr/local/mysql/data/hostname.err
log-bin=/usr/local/mysql/arch/mysql-bin
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:500M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/arch
innodb_log_files_in_group = 2
innodb_log_file_size = 200M
innodb_buffer_pool_size = 1024M
innodb_additional_mem_pool_size = 50M
innodb_log_buffer_size = 16M
innodb_lock_wait_timeout = 100
innodb_flush_log_at_trx_commit = 1
innodb_locks_unsafe_for_binlog=1
performance_schema
innodb_read_io_threads=4
innodb-write-io-threads=4
innodb-io-capacity=200
innodb_purge_threads=1
innodb_use_native_aio=on
innodb_file_per_table = 1
lower_case_table_names=1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[mysqlhotcopy]
interactive-timeout
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
5、修改my.cnf文件的屬性和權限
依次執行以下命令:
[root@hadoop01 etc]# chown mysqladmin:dba /etc/my.cnf
[root@hadoop01 etc]# chmod 640 /etc/my.cnf
[root@hadoop01 etc]# chown -R mysqladmin:dba /usr/local/mysql
[root@hadoop01 etc]# chmod -R 755 /usr/local/mysql
[root@hadoop01 etc]# su - mysqladmin
[mysqladmin@hadoop01 ~]$ pwd
/usr/local/mysql
[mysqladmin@hadoop01 ~]$ mkdir arch backup
執行初始化腳本,打印的日志沒有報錯,說明運行ok:
[mysqladmin@hadoop01 ~]$
初始化腳本命令:scripts/mysql_install_db --user=mysqladmin --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
6、配置mysql服務和自啟動
在root用戶下執行:
[mysqladmin@hadoop01 ~]$ su root
Password:
[root@hadoop01 mysql]#
[root@hadoop01 mysql]# cd /usr/local/mysql
[root@hadoop01 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
[root@hadoop01 mysql]# chmod +x /etc/rc.d/init.d/mysql
[root@hadoop01 mysql]# chkconfig --del mysql
[root@hadoop01 mysql]# chkconfig --add mysql
[root@hadoop01 mysql]# chkconfig --level 345 mysql on
[root@hadoop01 mysql]# vim /etc/rc.local(將里面的內容都刪掉,拷貝以下內容)
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
su - mysqladmin -c "/etc/init.d/mysql start --federated"
7、啟動mysql並監聽進程
執行以下命令:
[root@hadoop01 mysql]# su - mysqladmin
[mysqladmin@hadoop01 ~]$ mysqld_safe &
[1] 1888
重新打開一個連接執行:
ps -ef|grep mysqld(查看mysql的進程是否運行)
service mysql status(查看mysql的運行狀態)
出現上圖代表啟動ok
8、修改mysql的密碼
執行以下命令:
mysql> use mysql
mysql> update user set password=password('root') where user='root';
mysql> select host,user,password from user;
mysql> delete from user where user='';
mysql> flush privileges;
9、更改.bash_profile文件
進入到mysql目錄中,執行vim ./.bash_profile,拷貝以下內容:
[root@hadoop01 mysql]# cd /usr/local/mysql/
[root@hadoop01 mysql]# vim .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
MYSQL_BASE=/usr/local/mysql
export MYSQL_BASE
PATH=${MYSQL_BASE}/bin:$PATH
export PATH
unset USERNAME
#stty erase ^H
set umask to 022
umask 022
PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1
七.安裝http和啟動http服務
1.安裝http服務
切換到root用戶:
[root@hadoop01 mysql]# rpm -qa|grep httpd
[root@hadoop01 mysql]# yum install -y httpd
[root@hadoop01 mysql]# chkconfig --list|grep httpd
日志顯示:httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@hadoop01 mysql]# chkconfig httpd on
[root@hadoop01 mysql]# chkconfig --list|grep httpd
日志顯示:httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@hadoop01 mysql]# service httpd start
2.創建parcels文件
執行以下命令:
[root@hadoop01 mysql]# cd /var/www/html
[root@hadoop01 html]# mkdir parcels
將開始下載的三個文件上傳至此文件夾下:
①http://archive.cloudera.com/cdh5/parcels/5.10.0/CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel
②http://archive.cloudera.com/cdh5/parcels/5.10.0/CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha1
③http://archive.cloudera.com/cdh5/parcels/5.10.0/manifest.json
[root@hadoop01 parcels]# mkdir /opt/rpminstall
[root@hadoop01 parcels]# cd /opt/rpminstall
將下載的tarball上傳:cm5.10.0-centos6.tar.gz至當前目錄下
解壓:[root@hadoop01 rpminstall]# tar -xzvf cm5.10.0-centos6.tar.gz -C /var/www/html/
[root@hadoop01 rpminstall]# cd /var/www/html
[root@hadoop01 html]# ll
創建和官網相同的目錄:
[root@hadoop01 html]# mkdir -p cm5/redhat/6/x86_64/
[root@hadoop01 html]# mv cm cm5/redhat/6/x86_64/
3.配置本地yum源(3個節點)
[root@hadoop01 ~]# vi /etc/yum.repos.d/cloudera-manager.repo
粘貼以下內容:ip地址為當前機器的ip地址,如果集群在內網中則配置內網ip即可,該文件每台服務器都要配置一個,保存退出!
[cloudera-manager]
name = Cloudera Manager, Version 5.10.0
baseurl = http://39.100.73.64/cm5/redhat/6/x86_64/cm/5/
gpgcheck = 0
瀏覽器查看下面兩個網址是否出來,假如有,就配置成功(以下ip為公網ip)
http://39.100.73.64/parcels/
http://39.100.73.64/cm5/redhat/6/x86_64/cm/5/
八.安裝並啟動CM服務
1、執行以下命令
[root@hadoop01 ~]# cd /var/www/html/cm5/redhat/6/x86_64/cm/5/RPMS/x86_64
[root@hadoop01 x86_64]# yum install -y cloudera-manager-daemons-5.10.0-1.cm5100.p0.85.el6.x86_64.rpm
[root@hadoop01 x86_64]# yum install -y cloudera-manager-server-5.10.0-1.cm5100.p0.85.el6.x86_64.rpm
順序不能錯,只裝這兩個
[root@hadoop01 x86_64]# mkdir /usr/share/java
[root@hadoop01 x86_64]# cd /usr/share/java/
將mysql-connector-java.jar上傳到該目錄下:.jar包名稱必須為mysql-connector-java.jar
2、進入到mysql中,創建元數據
執行以下命令:
[root@hadoop01 java]# su - mysqladmin
hadoop01:mysqladmin:/usr/local/mysql:>cd bin
3、進入數據庫后,執行以下命令:
mysql> create database cmf DEFAULT CHARACTER SET utf8;
mysql> grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY 'root';
mysql> create database amon DEFAULT CHARACTER SET utf8;
mysql> grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'root';
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
mysql> flush privileges;
切換到root用戶:
[root@hadoop01 ~]# cd /etc/cloudera-scm-server/
[root@hadoop01 cloudera-scm-server]# vi db.properties(按照下圖中進行配置)
標注內容從上往下分別代表:數據庫類型,數據庫所在的主機ip:端口,數據庫名稱,數據庫用戶,數據庫設置類型
標注要和你之前的配置匹配
配置好后,保存退出
4、啟動CM服務
執行以下命令:
[root@hadoop01 jdk1.8.0_181]# service cloudera-scm-server start
查看日志:
[root@hadoop01 jdk1.8.0_181]# cd /var/log/cloudera-scm-server/
[root@hadoop01 cloudera-scm-server]# tail -f cloudera-scm-server.log
沒有錯誤日志提示,說明啟動成功~~~~~
九.CDH配置
1、登錄CDH配置界面
http://39.100.73.64:7180(ip為公網ip),用戶名和密碼都是admin,下面正式開始我們的頁面配置過程。(需要進入阿里雲控制台,將公網ip的端口開放:7180)
2、選擇免費
3、配置CDH集群
4、點擊搜索
出現這個頁面,代表集群能連接上,當前受管這一欄全部為否,如果有是的話,代表之前已經安裝好並且沒有卸載干凈,需要卸載干凈后重啟服務后在進入到該頁面。
5、配置parcels文件
5.1、點擊更多選項
5.2、配置遠程 Parcel 存儲庫 URL
進入到該頁面中,遠程 Parcel 存儲庫 URL這一欄刪掉只留下一個,將內容更改為之前配置過的parcel地址,這里用的是內網的ip,所以是http://39.100.73.64/parcels/,點擊保存
5.3、選擇版本和自定義存儲庫
5.4、不勾選JDK
5.5、不勾選單用戶模式
5.6、設置主機密碼
5.7、gent客戶端安裝
等待agent客戶端安裝,這一步可能會出現各種問題,通過點擊出現問題的服務器的詳細信息查看出現問題的地方並更改之后重啟服務重新安裝
6.等待安裝完成后,點擊繼續
7.等待安裝分配完成后,點擊繼續
8.繼續等待檢查主機
9.這里出現了警告,下面解決警告
透明大頁面和swap值需要更改
將每台機器關閉大頁面
執行以下命令:
在每個節點執行以下命令:
[root@hadoop01 cloudera-scm-server]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@hadoop01 cloudera-scm-server]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@hadoop01 cloudera-scm-server]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'>> /etc/rc.local
[root@hadoop01 cloudera-scm-server]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'>> /etc/rc.local
[root@hadoop01 cloudera-scm-server]# echo 'vm.swappiness = 10' >> /etc/sysctl.conf
[root@hadoop01 cloudera-scm-server]# sysctl –p
10.配置好以上命令以后,點擊重新運行
11.至此驗證完成,點擊完成按鈕
12.集群設置
選擇自定義服務,這里安裝HDFS,YARN和Zookeeper,勾選好后點擊繼續。
13.角色分配
根據我們之前的配置計划,選擇好安裝的節點有哪些(這是我的節點規划,僅供參考,實際以個人需求為主),之后點擊繼續。
14.選擇數據庫
這里匹配我們之前建好的amon數據庫,點擊測試連接,測試成功以后,點擊繼續。
15.審核更改
全部默認,不要動,點擊繼續
16.首次運行命令
這里根據我們的設置進行安裝相關的服務等,繼續等待最后的安裝,安裝完成后,點擊繼續。
17.出現以下界面,說明cdh搭建大數據平台成功!
18.進入主頁
這里就是安裝完成后的可視化界面,在此可以通過界面來安裝其他服務,比如:HBase、Spark等等;也可以看每個節點的運行狀態等。
最后,很感謝大家能看到這里,如果有什么問題,我們大家一起留言討論一下!