- 概述
- 文件下載
- 環(huán)境搭建
- 安裝Cloudera Manger
- 日志查看
- Q&A
概述
大數(shù)據(jù)時(shí)代,Hadoop是熱門的Apache開源項(xiàng)目逃糟,公司大多基于其商業(yè)化從而滿足自身的數(shù)據(jù)作業(yè)需求肛炮。CDH(Cloudera’s Distribution, including Apache Hadoop),是Hadoop眾多分支中的一種,由Cloudera維護(hù)二汛,整合Hadoop及一系列數(shù)據(jù)服務(wù),關(guān)于CDH拨拓,官網(wǎng)給予的解釋如下:
Critical Capabilities for Data Warehouse Database Management Systems
官網(wǎng)提供安裝包肴颊、部署手冊(cè)以及API說(shuō)明
安裝過(guò)程參考:
http://blog.csdn.net/jdplus/article/details/45920733
http://blog.csdn.net/a921122/article/details/51939692
基于其上,進(jìn)行適當(dāng)?shù)男薷暮屯晟?/p>
文件下載
- Cloudera Manager 地址:http://archive.cloudera.com/cm5/cm/5/
這里下載的是5.13.1的版本渣磷,http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz - CDH安裝包
地址:http://archive.cloudera.com/cdh5/parcels
本文基于CentOS7婿着,下載的parcels包及manifest文件對(duì)應(yīng)的版本為e17:
CDH-5.13.1-1.cdh5.9.0.p0.23-el7.parcel
CDH-5.13.1-1.cdh5.9.0.p0.23-el7.parcel.sha1
manifest.json - JDBC
http://download.softagency.net/MySQL/Downloads/Connector-J/
mysql-connector-java-5.1.39.tar.gznote : JDBC目前已經(jīng)有6.x,但與CDH 5.x存在不兼容醋界,這里提供5.1.39下載包
環(huán)境搭建
1. 網(wǎng)絡(luò)配置(所有節(jié)點(diǎn))
修改主機(jī)名:vim /etc/sysconfig/network
HOSTNAME=master
設(shè)置網(wǎng)絡(luò)為啟動(dòng)后自動(dòng)連接竟宋,相關(guān)的設(shè)置文件為vim /etc/sysconfig/network-scripts/ifcfg-ethXX/
ONBOOT=yes
修改IP與主機(jī)名的對(duì)應(yīng)關(guān)系:vim /etc/hosts
192.168.39.31 master
192.168.39.20 node1
192.168.39.23 node2
2. 設(shè)置SSH無(wú)密碼訪問(wèn)(所有節(jié)點(diǎn))
執(zhí)行一下命令,一路回車形纺,生成無(wú)密碼的密鑰對(duì)丘侠。
# ssh-keygen -t rsa
將公鑰添加到認(rèn)證文件中, 并設(shè)置authorized_keys的訪問(wèn)權(quán)限
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
通過(guò)scp命令將各節(jié)點(diǎn)的認(rèn)證文件拷貝到所有其他節(jié)點(diǎn)使得各節(jié)點(diǎn)能夠相互訪問(wèn)。
3. 安裝Oracle Java(所有節(jié)點(diǎn))
Linux可能自帶OpenJDK逐样,但運(yùn)行CDH5需要使用Oracle的JDK蜗字,需要Java 7以上版本的支持。
1. 卸載自帶的OpenJDK 使用下述命令查詢相關(guān)的java包
# rpm -qa | grep java
使用-e選項(xiàng)填入包名卸載
# rpm -e --nodeps packageName
2. 安裝Oracle java Oracle的官網(wǎng)下載jdk的rpm安裝包脂新,并使用rpm -ivh packageName安裝
3. 配置java環(huán)境變量 修改環(huán)境變量挪捕,vim /etc/environment(和/etc/profile區(qū)別,大家可自行去網(wǎng)上查找) 添加如下(使用rpm安裝的java在/usr/java/jdk1.8XXXX)
export JAVA_HOME=/usr/java/jdk1.8XXXX
執(zhí)行命令使環(huán)境變量生效
# source /etc/environment
4. 安裝配置MySQL(主節(jié)點(diǎn))
安裝mysql
# yum -y install mysql mysql-server mysql-devel
啟動(dòng)mysqld
# service mysqld start
開機(jī)啟動(dòng)
# chkconfig mysqld on
設(shè)置root用戶密碼
# mysql -u root -p xxxxxx
進(jìn)入mysql命令行争便,創(chuàng)建以下數(shù)據(jù)庫(kù):
#hive
> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#hue
> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity oozie (可選)
> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
授權(quán)root用戶在主節(jié)點(diǎn)擁有所有數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限
> grant all privileges on *.* to'root'@'master' identified by'xxxx'with grant option;
> flush privileges;
>
5. 關(guān)閉防火墻和SELinux
關(guān)閉防火墻
1.關(guān)閉集群所有服務(wù)器的防火墻
[root@ip-172-31-6-148~]# chkconfig iptables off
[root@ip-172-31-6-148~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@ip-172-31-6-148 ~]#
2.檢查集群所有服務(wù)器防火墻是否關(guān)閉
[root@ip-172-31-6-148~]# service iptables status
iptables: Firewall is not running.
[root@ip-172-31-6-148~]#
禁用SELinux
1.在集群所有節(jié)點(diǎn)執(zhí)行如下命令
[root@ip-172-31-6-148~]# setenforce 0
2.修改集群所有節(jié)點(diǎn)配置文件/etc/selinux/config
[root@ip-172-31-6-148~]# vim /etc/selinux/config
# This file controls the state ofSELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policyis enforced.
# permissive - SELinux printswarnings instead of enforcing.
# disabled - No SELinux policy isloaded.
SELINUX=disabled
# SELINUXTYPE= can take one of thesetwo values:
# targeted - Targeted processes areprotected,
# mls - Multi Level Securityprotection.
SELINUXTYPE=targeted
3.驗(yàn)證是否禁用成功
[root@ip-172-31-6-148~]# sestatus -v
SELinux status: disabled
[root@ip-172-31-6-148~]#
6. 配置時(shí)鐘同步
如果企業(yè)有自己的NTP Server則可以集群中所有節(jié)點(diǎn)可配置企業(yè)NTP Server级零,如果沒有自己的NTP服務(wù)器則在集群中選用一臺(tái)服務(wù)器作為NTP Server,其它服務(wù)器與其保持同步始花,配置如下:
1.在集群所有節(jié)點(diǎn)安裝NTP服務(wù)
[root@ip-172-31-6-148~]# yum -y install ntp
2.選擇集群一臺(tái)服務(wù)器作為NTP Server妄讯,配置如下
[root@ip-172-31-6-148~]# vim /etc/ntp.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10
3.集群其它節(jié)點(diǎn)與其同步,配置如下:
[ip-172-31-5-190 ~]# vim /etc/ntp.conf
# Use public servers from thepool.ntp.org project.
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 172.31.6.148
4.完成以上配置后酷宵,在集群所有節(jié)點(diǎn)執(zhí)行如下命令
[root@ip-172-31-6-148~]# chkconfig --add ntpd
[root@ip-172-31-6-148~]# chkconfig ntpd on
[root@ip-172-31-6-148~]# service ntpd restart
Shutting down ntpd: [ OK ]
Starting ntpd: [ OK ]
[root@ip-172-31-6-148~]#
5.驗(yàn)證所有節(jié)點(diǎn)NTP是否同步
[root@ip-172-31-5-190~]# ntpq -p
remote refid st t when pollreach delay offset jitter
==============================================================================
*ip-172-31-6-148210.23.25.77 2 u 448 1024 377 0.255 3.245 7.859
[root@ip-172-31-5-190~]#
Cloudera Manager安裝與集群配置
1. 主節(jié)點(diǎn)CM安裝
解壓:tar xzvf cloudera-manager*.tar.gz將解壓后的cm-5.13.1和cloudera目錄放到/opt目錄下亥贸。 建立數(shù)據(jù)庫(kù):找到前面下載的mysql-connector-java-5.1.39.tar.gz,解壓后將mysql-connector-java-5.1.39-bin.jar放到每臺(tái)服務(wù)器/opt/cm-5.13.1/share/cmf/lib/和/opt/cloudera/parcels/CDH-5.13.1-1.cdh5.13.1.p0.2/lib/hive/lib/中浇垦。 初始化數(shù)據(jù)庫(kù):
# /opt/cm-5.9/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode1 -uroot -p123456 --scm-host node1 scm scm scm
note:在這里后面的參數(shù)分別是:數(shù)據(jù)庫(kù)類型 數(shù)據(jù)庫(kù)名稱 數(shù)據(jù)庫(kù)主機(jī)名 數(shù)據(jù)庫(kù)用戶名 密碼 --scm-host cmserver主機(jī)名 scm scm scm
2. Agent配置
修改/opt/cm-5.9/etc/cloudera-scm-agent/config.ini中的server_host為主節(jié)點(diǎn)的主機(jī)名炕置。 同步Agent到其他所有節(jié)點(diǎn): scp -r /opt/cm-5.9 root@node2:/opt/ 在所有節(jié)點(diǎn)創(chuàng)建cloudera-scm用戶
# useradd --system --home=/opt/cm-5.7.1/run/cloudera-scm-server/ --no -create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
3. 安裝CDH5
1. 準(zhǔn)備Parcels 將CHD5相關(guān)的Parcel包放到主節(jié)點(diǎn)的/opt/cloudera/parcel-repo/目錄中(parcel-repo需要手動(dòng)創(chuàng)建)。
相關(guān)的文件如下:
CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1
manifest.json
最后執(zhí)行命令,重命名.sha文件
# mv CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1 CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha
2. 啟動(dòng)CM
# /opt/cm-5.7.1/etc/init.d/cloudera-scm-server start
# /opt/cm-5.7.1/etc/init.d/cloudera-scm-agent start
其余命令還有stop(停止)朴摊, status(狀態(tài))默垄, restart(重啟)
4. CDH集群配置
Cloudera Manager Server和Agent都啟動(dòng)以后,就可以進(jìn)行CDH5的安裝配置甚纲。
打開瀏覽器口锭,訪問(wèn)master:7180/cmf/login
由于CM Server的啟動(dòng)需要花點(diǎn)時(shí)間,這里可能要等待一會(huì)才能訪問(wèn)成果介杆,可能需要3-5分鐘鹃操,默認(rèn)的用戶名和密碼均為admin
check:本機(jī)可以先curl -i master:7180/cmf/login測(cè)試,有返回結(jié)果后春哨,在瀏覽器端荆隘,輸入ip:7180/cmf/login進(jìn)行配置
note: 此處注意,若本機(jī)可curl連接上赴背,但其他主機(jī)連接不上椰拒,考慮:主機(jī)防火墻是否正常關(guān)閉;兩臺(tái)主機(jī)是否在同一個(gè)局域網(wǎng)
note:以下圖借用CM 5.7安裝圖
當(dāng)各Agent節(jié)點(diǎn)正常啟動(dòng)后燃观,可以在當(dāng)前管理的主機(jī)列表中看到對(duì)應(yīng)的節(jié)點(diǎn)。選擇要安裝的節(jié)點(diǎn)浇揩,點(diǎn)繼續(xù)仪壮。
下一步憨颠,出現(xiàn)parcel自檢測(cè)包名胳徽,如果本地Parcel包配置無(wú)誤,選目標(biāo)版本(例如CM5.7.1)爽彤,直接點(diǎn)繼續(xù)就可以了(若沒有出現(xiàn)對(duì)應(yīng)版本养盗,則重啟CM server和agent)。
pic3. parcel包版本檢測(cè)
繼續(xù)适篙,如果配置本地Parcel包無(wú)誤往核,那么下圖中的已下載,應(yīng)該是瞬間就完成了嚷节,然后就是耐心等待分配過(guò)程就行了聂儒,這個(gè)過(guò)程的速度就取決于節(jié)點(diǎn)之間的傳輸速度。
當(dāng)前受管:假如在安裝的時(shí)候出現(xiàn)問(wèn)題硫痰,如網(wǎng)絡(luò)連接中斷衩婚,機(jī)器死機(jī),繼續(xù)安裝的時(shí)候可能會(huì)出現(xiàn)查詢不到機(jī)器效斑,并且根據(jù)ip搜索機(jī)器的時(shí)候非春,出現(xiàn)“當(dāng)前受管”的狀態(tài)為“是”,安裝失敗的機(jī)器不能再選擇了。
至此奇昙,所有節(jié)點(diǎn)部署完成
下一步主機(jī)檢查护侮,遇到以下問(wèn)題:
Cloudera 建議將 /proc/sys/vm/swappiness 設(shè)置為 10。當(dāng)前設(shè)置為 60储耐。使用 sysctl 命令在運(yùn)行時(shí)更改該設(shè)置并編輯 /etc/sysctl.conf 以在重啟后保存該設(shè)置羊初。
# echo 10 > /proc/sys/vm/swappiness
第二個(gè)警告,提示執(zhí)行命令:
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
執(zhí)行完畢什湘,重啟后凳忙,警告依然,暫時(shí)不處理禽炬。
繼續(xù)之后涧卵,進(jìn)入到安裝服務(wù)頁(yè)面
note:從這里開始,所有的服務(wù)腹尖,既可以通過(guò)下述自助來(lái)安裝一系列服務(wù)柳恐;也可以手動(dòng)在CM管理頁(yè)面一個(gè)一個(gè)添加
之前安裝時(shí)選擇一次性安裝一系列服務(wù),由于沒有新建hue數(shù)據(jù)庫(kù)導(dǎo)致hue服務(wù)安裝不上热幔,所以后面選擇一個(gè)一個(gè)安裝乐设,在前期搭建環(huán)境時(shí)這樣更好,起碼出現(xiàn)問(wèn)題可以鎖定是哪個(gè)服務(wù)绎巨。
分步安裝服務(wù)步驟為:
點(diǎn)擊頁(yè)面上Cloudera MANAGER近尚,回到主節(jié)點(diǎn)頁(yè)面
出現(xiàn)cluster1群集1,點(diǎn)擊下拉场勤,選擇“添加服務(wù)”
HDFS戈锻,HIVE, HUE,Oozie和媳, YARN, ZOOKEEPER是核心Hadoop的幾個(gè)服務(wù)格遭,分別安裝,由于這些節(jié)點(diǎn)存在依賴關(guān)系留瞳,需注意先后順序(當(dāng)然拒迅,安裝時(shí)CM會(huì)警告),順序是:
Zookeeper, hdfs, yarn, hive, oozie, hue
注意:在安裝hive, hue和oozie時(shí)她倘,要將mysql驅(qū)動(dòng)jar拷貝到相應(yīng)位置
# cp /opt/cm-5.9/share/cmf/lib/mysql-connector-java-*-bin.jar /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hive/lib/
# cp /opt/cm-5.9/share/cmf/lib/mysql-connector-java-*-bin.jar /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23 /lib/hue/lib/
# cp /opt/cm-5.9 /share/cmf/lib/mysql-connector-java-*-bin.jar /var/lib/oozie/
按需安裝完服務(wù)后璧微,可在集群界面(即Cloudera MANAGER)看一下集群的狀況 [圖片上傳失敗...(image-73a4ff-1513586472070)]
綠色:良好
黃色:運(yùn)行不良
紅色:存在問(wèn)題
查看日志
CM雖然配置麻煩,但日志齊全硬梁,每個(gè)操作前硫,都能找到相應(yīng)的運(yùn)行日志,日志對(duì)于配合靶溜、調(diào)試和查看任務(wù)進(jìn)度都有很大的幫助
群集日志入口為
各服務(wù)節(jié)點(diǎn)也有日志入口开瞭,支持日志篩選
分為stdout(所有日志), stderr(錯(cuò)誤日志)懒震, 在細(xì)節(jié)上支持分級(jí)別(INFO, TRACE, DEBUG等)篩選
Q&A
ps. 這部分有截取網(wǎng)上的解決方案,也有自己遇到的問(wèn)題
在部署完成以后嗤详,會(huì)出現(xiàn)大量問(wèn)題个扰,其中有大量警告,是由于var/log/*的權(quán)限問(wèn)題造成的葱色。
在master上递宅,運(yùn)行chmod -R 777對(duì)應(yīng)的文件夾修改權(quán)限即可。出現(xiàn)oozie和hive不能成功啟動(dòng)
一般是因?yàn)槿鄙賘dbc苍狰,復(fù)制到相應(yīng)位置即可办龄,位置請(qǐng)×苷眩或者是由于mysql數(shù)據(jù)庫(kù)中的表造成的俐填,可能是表已經(jīng)存在了service monitor和host monitor都無(wú)法啟動(dòng)
一般也是由于var/log/*的權(quán)限問(wèn)題造成的service monitor和host monitor正常啟動(dòng),但是無(wú)法獲取到圖表數(shù)據(jù)
注銷admin重新進(jìn)入翔忽,或者等一下hdfs不能正常啟動(dòng)
可能是因?yàn)?dfs的權(quán)限原因英融,提高/目錄的權(quán)限hdfs和yarn的端口不再是9000和10020,默認(rèn)的是8020和8021
如果使用Windows遠(yuǎn)程調(diào)試歇式,請(qǐng)保證host文件(C:/Windows/System32/drivers/hosts)和集群上的host文件內(nèi)容一致驶悟。
主機(jī)崩潰怎么辦?
一般來(lái)說(shuō)崩潰了,直接重啟就好材失。不過(guò)一定記得要再次啟動(dòng)cm的agent和server服務(wù)通過(guò)CM啟動(dòng)Hive報(bào)錯(cuò) org.apache.hadoop.hive. metastore.HiveMetaException: Failed to load driver
這種情況痕鳍,是缺少jdbc驅(qū)動(dòng),添加jdbc驅(qū)動(dòng)到相應(yīng)的lib下面龙巨。hive的lib路徑是/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hive/lib放置好lib之后笼呆,啟動(dòng)hive,接著出現(xiàn)java.sql.SQLException:Column name pattern can not be NULL or empty.
原因是恭应,一開始使用的jdbc lib是6.x的最新版本抄邀,但5.x和6.x在連接時(shí)針對(duì)某些默認(rèn)值的檢測(cè)值不同耘眨,將CM內(nèi)用到的所有jdbc lib修改為5.x之后解決了這個(gè)錯(cuò)誤啟動(dòng)hdfs后昼榛,報(bào)警:群集中有704個(gè)副本不足的塊,百分比副本不足的塊:100%剔难。臨界閾值:40%
解決方案:通過(guò)命令更改已經(jīng)上傳的文件的副本數(shù)(使用hdfs用戶)
12.python連接hive時(shí)胆屿, Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: no
安裝3個(gè)庫(kù)
cyrus-sasl-plain
cyrus-sasl-devel
cyrus-sasl-gssapi