天天看點

CDH5 離線安裝 記錄

Cloudera Manager下載下傳位址:

http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.4.3_x86_64.tar.gz ,

CDH安裝包位址:

http://archive.cloudera.com/cdh5/parcels/5.4.3/ ,由于我們的作業系統為CentOS6.5,需要下載下傳以下檔案:

·        CDH-5.4.3-1.cdh5.4.3.p0.6-el6.parcel

·        CDH-5.4.3-1.cdh5.4.3.p0.6-el6.parcel.sha1

·        manifest.json

準備工作:系統環境搭建

以下操作均用root使用者操作。

1.網絡配置(所有節點)

vi /etc/sysconfig/network 修改hostname:

NETWORKING=yes

HOSTNAME=hadoop.master

通過 service networkrestart 重新開機網絡服務生效。

vi /etc/hosts ,修改ip與主機名的對應關系

192.168.226.17  hadoop.master master

192.168.226.18 hadoop.slave1 slave1

192.168.226.19 hadoop.slave2 slave2

192.168.226.20 hadoop. slave3 slave3

注意: 這裡需要将每台機器的ip及主機名對應關系都寫進去,本機的也要寫進去,否則啟動Agent的時候會提示hostname解析錯誤。

2.打通SSH,設定ssh無密碼登陸(所有節點)

在所有節點上執行 ssh-keygen -trsa 一路回車,生成無密碼的密鑰對。

将公鑰添加到認證檔案中: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ,并設定authorized_keys的通路權限: chmod 600 ~/.ssh/authorized_keys 。

scp檔案到所有datenode節點:

scp ~/.ssh/authorized_keys root@slave1:~/.ssh/

測試: 在主節點上ssh slave1,正常情況下,不需要密碼就能直接登陸進去了。

3.安裝jdk(所有節點)

CentOS,自帶OpenJdk,不過運作CDH5需要使用Oracle的Jdk,需要Java 7的支援。

解除安裝自帶的OpenJdk,使用 rpm -qa | grep java 查詢java相關的包,使用 rpm -e --nodeps 包名 解除安裝(凡是java開頭 都解除安裝)。

去Oracle的官網下載下傳jdk的rpm安裝包,并使用 rpm -ivh 包名 安裝之。

由于是rpm包并不需要我們來配置環境變量,我們隻需要配置一個全局的JAVA_HOME變量即可,執行指令:

echo"JAVA_HOME=/usr/java/latest/" >> /etc/profile          注意:latest是jdk目錄的軟連接配接,是以你使用它或者直接寫jdk的目錄都可以                 

4.安裝配置MySql(主節點)

  安裝mysql請看   http://blog.csdn.net/wanghui19931015/article/details/52663862

mysql -uroot -p123456 進入mysql指令行,建立以下資料庫:

#hive

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

#activity monitor

create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

設定root授權通路以上所有的資料庫:

#授權root使用者在主節點擁有所有資料庫的通路權限

 grant all privileges on *.* to 'root'@'master' identified by '123456'with grant option;

 grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

 flush privileges;

5.關閉防火牆和SELinux

注意: 需要在所有的節點上執行,因為涉及到的端口太多了,臨時關閉防火牆是為了安裝起來更友善,安裝完畢後可以根據需要設定防火牆政策,保證叢集安全。

關閉防火牆:

service iptables stop(臨時關閉) 

chkconfig iptables off(重新開機後生效)

關閉SELINUX(實際安裝過程中發現沒有關閉也是可以的,不知道會不會有問題,還需進一步進行驗證):

setenforce 0(臨時生效) 

修改 /etc/selinux/config下的 SELINUX=disabled(重新開機後永久生效)

6.所有節點配置NTP服務

叢集中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。具體思路如下:

master節點作為ntp伺服器與外界對時中心同步時間,随後對所有datanode節點提供時間同步服務。

所有datanode節點以master節點為基礎同步時間。

所有節點安裝相關元件: yum install ntp 。完成後,配置開機啟動: chkconfig ntpdon ,檢查是否設定成功: chkconfig --list ntpd 其中2-5為on狀态就代表成功。

主節點配置

在配置之前,先使用ntpdate手動同步一下時間,免得本機與對時中心時間差距太大,使得ntpd不能正常同步。這裡選用master作為對時中心, ntpdate -u master 。master主機添加下面資訊到/etc/ntp.conf

server 127.127.1.0

fudge  127.127.1.0 stratum 2

restrict 192.168.226.0 mask 255.255.255.0 nomodify notrap

叢集其他節點修改/etc/ntp.conf,如下:

# Pleaseconsider joining the pool (http://www.pool.ntp.org/join.html).

#server0.centos.pool.ntp.org iburst

#server1.centos.pool.ntp.orgiburst

#server2.centos.pool.ntp.org iburst

#server3.centos.pool.ntp.org iburst

server master

配置檔案完成,儲存退出,

設定開機啟動chkconfig ntpd on

啟動服務,執行如下指令: service ntpdstart

正式開工

安裝Cloudera Manager Server和Agent

主節點解壓安裝

cloudera manager的目錄預設位置在/opt下,解壓: tar xzvfcloudera-manager*.tar.gz 将解壓後的cm-5.4.3和cloudera目錄放到/opt目錄下。

為Cloudera Manager 5建立資料庫

首先需要去MySql的官網下載下傳JDBC驅動, http://dev.mysql.com/downloads/connector/j/ ,解壓後,找到mysql-connector-java-5.1.39-bin.jar,放到/opt/cm-5.4.3/share/cmf/lib/中。

同時 chmod 755mysql-connector-java-5.1.39-bin.jar

在主節點初始化CM5的資料庫:

/opt/cm-5.4.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hmaster -uroot -p123456 --scm-host master scm scm scm

Agent配置

修改/opt/cm-5.4.3/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名。

修改/opt/cm-5.4.3/lib64/cmf/agent/src/cmf/util.py檔案。

将其中的代碼:

pipe = subprocess.Popen(['/bin/bash','-c', ". %s; %s; env" % (path, command)],

                       stdout=subprocess.PIPE,env=caller_env)

修改為:

pipe = subprocess.Popen(['/bin/bash','-c', ". %s; %s; env | grep -v { | grep -v }" % (path, command)],

             stdout=subprocess.PIPE, env=caller_env)

同步Agent到其他節點

scp -r/opt/cm-5.4.3 [email protected]:/opt/

在所有節點建立cloudera-scm使用者

useradd --system --home=/opt/cm-5.4.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

準備Parcels,用以安裝CDH5

将CHD5相關的Parcel包放到主節點的/opt/cloudera/parcel-repo/目錄中(parcel-repo需要手動建立)。

相關的檔案如下:

·        CDH-5.4.3-1.cdh5.4.3.p0.12-el6.parcel

·        CDH-5.4.3-1.cdh5.4.3.p0.12-el6.parcel.sha1

·        manifest.json

最後将CDH-5.4.3-1.cdh5.4.3.p0.12-el6.parcel.sha1,重命名為CDH-5.4.3-1.cdh5.4.3.p0.12-el6.parcel.sha,這點必須注意,否則,系統會重新下載下傳CDH-5.4.3-1.cdh5.4.3.p0.12-el6.parcel檔案。

相關啟動腳本

通過  /opt/cm-5.4.3/etc/init.d/cloudera-scm-server start 啟動主節點服務端。 

通過   /opt/cm-5.4.3/etc/init.d/cloudera-scm-agent start啟動其他節點Agent服務。

注意:兩個腳本都啟動成功,正常運作

需要停止服務将以上的start參數改為stop就可以了,重新開機是restart。

CDH5的安裝配置

Cloudera ManagerServer和Agent都啟動以後,就可以進行CDH5的安裝配置了。

這時可以通過浏覽器通路主節點的7180端口測試一下了(由于CM Server的啟動需要花點時間,這裡可能要等待一會才能通路),預設的使用者名和密碼均為admin:

CDH5 離線安裝 記錄

1、選擇免費版本的CM5。

CDH5 離線安裝 記錄

2、各個Agent節點正常啟動後,可以在目前管理的主機清單中看到對應的節點。選擇要安裝的節點,點繼續。

CDH5 離線安裝 記錄

3、接下來,出現以下包名,說明本地Parcel包配置無誤,直接點繼續就可以了。

CDH5 離線安裝 記錄

4、點選,繼續。

CDH5 離線安裝 記錄

5、接下來是伺服器檢查,可能會遇到以下問題:

Cloudera建議将 /proc/sys/vm/swappiness設定為 0。目前設定為 60。使用 sysctl指令在運作時更改該設定并編輯/etc/sysctl.conf以在重新開機後儲存該設定。您可以繼續進行安裝,但可能會遇到問題,Cloudera Manager報告您的主機由于交換運作狀況不佳。以下主機受到影響:

通過 echo 0 >/proc/sys/vm/swappiness 即可解決。

CDH5 離線安裝 記錄

6、接下來是選擇安裝服務:

CDH5 離線安裝 記錄

服務配置,一般情況下保持預設就可以了(Cloudera Manager會根據機器的配置自動進行配置,如果需要特殊調整,自行進行設定就可以了):

CDH5 離線安裝 記錄

接下來是資料庫的設定,檢查通過後就可以進行下一步的操作了:

CDH5 離線安裝 記錄

7、叢集設定的審查頁面,保持預設配置的:

CDH5 離線安裝 記錄

終于到安裝各個服務的地方了,注意,這裡安裝Hive的時候可能會報錯,因為我們使用了MySql作為hive的中繼資料存儲,hive預設沒有帶mysql的驅動,通過以下指令拷貝一個就行了:

cp/opt/cm-5.4.3/share/cmf/lib/mysql-connector-java-5.1.39-bin.jar  /opt/cloudera/parcels/CDH-5.4.3-1.cdh5.1.3.p0.12/lib/hive/lib/

CDH5 離線安裝 記錄

安裝完成後,就可以進入叢集界面看一下叢集的目前狀況了。

測試

在叢集的一台機器上執行以下模拟Pi的示例程式:

sudo -u hdfs hadoop jar/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi10100

執行過程需要花一定的時間,通過YARN的背景也可以看到MapReduce的執行狀态:

MapReduce執行過程中終端的輸出如下:

Number of Maps  =10

Samples per Map =100

Wrote inputfor Map#0

Wrote inputfor Map#1

Wrote inputfor Map#2

Wrote inputfor Map#3

Wrote inputfor Map#4

Wrote inputfor Map#5

Wrote inputfor Map#6

Wrote inputfor Map#7

Wrote inputfor Map#8

Wrote inputfor Map#9

Starting Job

14/10/1301:15:34 INFOclient.RMProxy: Connecting to ResourceManager at n1/192.168.1.161:8032

14/10/1301:15:36 INFOinput.FileInputFormat: Total input paths to process : 10

14/10/1301:15:37 INFOmapreduce.JobSubmitter: number of splits:10

14/10/1301:15:39 INFOmapreduce.JobSubmitter: Submitting tokens for job:job_1413132307582_0001

14/10/1301:15:40 INFOimpl.YarnClientImpl: Submitted application application_1413132307582_0001

14/10/1301:15:40 INFOmapreduce.Job: The url to track the job: http://n1:8088/proxy/application_1413132307582_0001/

14/10/1301:15:40 INFOmapreduce.Job: Running job: job_1413132307582_0001

14/10/1301:17:13 INFOmapreduce.Job: Job job_1413132307582_0001 running in uber mode : false

14/10/1301:17:13 INFOmapreduce.Job:  map 0% reduce0%

14/10/1301:18:02 INFOmapreduce.Job:  map 10% reduce0%

14/10/1301:18:25 INFOmapreduce.Job:  map 20% reduce0%

14/10/1301:18:35 INFOmapreduce.Job:  map 30% reduce0%

14/10/1301:18:45 INFOmapreduce.Job:  map 40% reduce0%

14/10/1301:18:53 INFOmapreduce.Job:  map 50% reduce0%

14/10/1301:19:01 INFOmapreduce.Job:  map 60% reduce0%

14/10/1301:19:09 INFOmapreduce.Job:  map 70% reduce0%

14/10/1301:19:17 INFOmapreduce.Job:  map 80% reduce0%

14/10/1301:19:25 INFOmapreduce.Job:  map 90% reduce0%

14/10/1301:19:33 INFOmapreduce.Job:  map 100% reduce0%

14/10/1301:19:51 INFOmapreduce.Job:  map 100% reduce100%

14/10/1301:19:53 INFOmapreduce.Job: Job job_1413132307582_0001 completed successfully

14/10/1301:19:56 INFOmapreduce.Job: Counters: 49

 File System Counters

   FILE: Number of bytesread=91

   FILE: Number of bytes written=1027765

   FILE: Number ofread operations=0

   FILE: Number of largeread operations=0

   FILE: Number ofwrite operations=0

   HDFS: Number of bytesread=2560

   HDFS: Number of bytes written=215

   HDFS: Number ofread operations=43

   HDFS: Number of largeread operations=0

   HDFS: Number ofwrite operations=3

 Job Counters

   Launchedmap tasks=10

   Launched reduce tasks=1

   Data-local map tasks=10

   Totaltime spent by all maps in occupied slots (ms)=118215

   Totaltime spent by all reduces in occupied slots (ms)=11894

   Totaltime spent by allmap tasks (ms)=118215

   Totaltime spent by all reduce tasks (ms)=11894

   Total vcore-seconds taken by allmap tasks=118215

   Total vcore-seconds taken by all reduce tasks=11894

   Total megabyte-seconds taken by allmap tasks=121052160

   Total megabyte-seconds taken by all reduce tasks=12179456

 Map-Reduce Framework

   Map input records=10

   Map output records=20

   Map output bytes=180

   Map output materialized bytes=340

   Inputsplit bytes=1380

   Combine input records=0

   Combine output records=0

   Reduce input groups=2

   Reduce shuffle bytes=340

   Reduce input records=20

   Reduce output records=0

   Spilled Records=40

   Shuffled Maps =10

   Failed Shuffles=0

   Merged Map outputs=10

   GCtime elapsed (ms)=1269

   CPUtime spent (ms)=9530

   Physical memory (bytes) snapshot=3792773120

   Virtual memory (bytes) snapshot=16157274112

   Total committed heap usage (bytes)=2856624128

 Shuffle Errors

   BAD_ID=0

   CONNECTION=0

   IO_ERROR=0

   WRONG_LENGTH=0

   WRONG_MAP=0

   WRONG_REDUCE=0

 File Input Format Counters

   Bytes Read=1180

 File Output Format Counters

   Bytes Written=97

Job Finished in262.659 seconds

Estimated value of Pi is3.14800000000000000000

最後 感謝 http://www.tuicool.com/articles/ENjmeaY/ 部落客,因為有這個作為參考,可以讓自己盡快的熟悉安裝流程。具體要通過 日志 來分析問題。

 當然,離線安裝後可能會因為一些原因想删除 CDH 重新安裝, 這裡我會在下一篇文章中會展現。