CDH大數據平台搭建


1.搭建環境

  • 兩台筆記本電腦A和B,自帶內存分別為12G和8G,安裝VMware 12。

  • A開一個虛擬機,2*CPU,8G內存,使用橋接網卡模式,安裝CentOS6.5,充當主機Master。

  • B開兩個虛擬機,1*CPU,2G內存,使用橋接網卡模式,安裝CentOS6.5,充當分機Slave1,Slave2。

  • 兩台電腦通過網線連接到學校內網,使用內網網絡環境搭建,三台虛擬機的root密碼必須一致。

2.安裝前的准備

首先先下載以下安裝包

  • cloudera-manager-el6-cm5.8.0_x86_64.tar.gz (Cloudera Manager 安裝包,el6代表使用的CentOs6.x,cm-5.8.0代表使用的Cloudera Manager版本為5.8.0)
  • CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel (CDH離線資源包)
  • CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
  • manifest.json
  • cm5.8.0-centos6.tar.gz (里面有一些必要的環境)
  • mysql-connector-java-5.1.6-bin.jar (JDBC)

下載路徑分別為

http://archive.cloudera.com/cm5/cm/5/

http://archive.cloudera.com/cdh5/parcels/5.8.0/

http://archive.cloudera.com/cm5/repo-as-tarball/5.8.0/

注意:不要圖方便少下什么,或者少安裝什么,尤其是JDK一定要安裝官方的,要不會導致后面Spark配制出錯,這個地方我們起碼失敗了5、6次,一定要全部下下來,重來的代價會更高

3.安裝前的配置

首先進入root權限:輸入su,再輸入密碼即可

3.1.配置主機名

分別修改各節點/etc/sysconfic/network文件,設置主機名為Master,Slave1,Slave2。

找到HOSTNAME可進行修改,名字以方便識別主節點和分節點為標准。

修改完后執行service network restart重啟服務。

使用hostname進行驗證。

如果沒有生效,那就重啟虛擬機。

3.2.關閉防火牆

執行命令:service iptables stop

再執行:chkconfig iptables off

使用chkconfig --list|grep iptables檢查是否全關

如果為iptables 0:off  1:off 2:off  3:off  4:off 5:off  6:off則說明關完了

3.3.綁定ip與主機名

先查看ifconfig三台虛擬機的ip。

分別在三台虛擬機上打開並更改hosts

vi /etc/hosts

輸入如下

192.168.30.21  Master
192.168.30.22  Slave1
192.168.30.23  Slave2

配置完后,3台虛擬機互ping ip和主機名,驗證是否配置成功。

3.4.配置ssh免密碼登錄(默認已安裝ssh)

在Master中使用ssh-keygen -t rsa生成秘鑰,一路回車.

cd ~/.ssh找到id_rsa.pub,將其寫入到authorized_keys中.

輸入cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys.

輸入ssh Master看看是否已經免秘鑰,第一次可能要輸密碼和輸一個yes.

成功后同理在其他兩台機子上輸入ssh-keygen -t rsa生成秘鑰。

將生成的秘鑰如果是圖形化的界面直接粘貼到Master的authorized_keys中,再由Master使用scp分發給其他兩台主機。

如果不是圖形化,那就用putty,xshell等等登錄虛擬機粘貼,如果沒有,那就用scp傳。

使用scp將authorized_keys傳給slave1和slave2,輸入scp ~/.ssh/authorized_keys root@slave1:~/.ssh把slave1改為slave2及傳給2。

互相使用ssh hostname登錄對方看看是否免秘鑰,不行檢查authorized_keys是否正確。

3.5.關閉SELINUX

setenforce 0 #臨時生效
或
修改/etc/selinux/config 文件的 SELINUX=disabled #重啟生效

3.6.安裝Mysql(master節點)

首先使用rpm -qa|grep -i mysql檢查是否安裝了Mysql,如果有

使用rpm -e 包名刪除Mysql包。

然后下載MySQL包

http://dev.mysql.com/downloads/mysql/#downloads

我使用的是MySQL-5.5.49-1.linux2.6.x86_64.rpm-bundle.tar這個文件,解壓它得到

MySQL-client-5.5.49-1.linux2.6.x86_64.rpm
MySQL-devel-5.5.49-1.linux2.6.x86_64.rpm
MySQL-embedded-5.5.49-1.linux2.6.x86_64.rpm
MySQL-server-5.5.49-1.linux2.6.x86_64.rpm
MySQL-shared-5.5.49-1.linux2.6.x86_64.rpm
MySQL-shared-compat-5.5.49-1.linux2.6.x86_64.rpm
MySQL-test-5.5.49-1.linux2.6.x86_64.rpm

使用rpm -ivh MySQL*全部安裝,一個都不能少,要不可能會導致后面報錯!

然后使用/usr/bin/mysql_secure_installation 改mysql密碼。

輸入mysql -u root -p進入mysql。

首先創建用戶

CREATE USER 'hive'@'%' IDENTIFIED BY 'hive'; CREATE USER 'hue'@'%' IDENTIFIED BY 'hue'; CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie';

在創建數據庫

CREATE DATABASE hive; CREATE DATABASE hue; CREATE DATABASE oozie;

最后賦予各個用戶權限

GRANT ALL ON hive.* TO 'hive'@'%' GRANT ALL ON hue.* TO 'hue'@'%' GRANT ALL ON oozie.* TO 'oozie'@'%' 

3.7.安裝JDK

解壓cm5.8.0-centos6.tar.gz后打開里面的rpm文件夾,里面應該有一個JDK 1.6和一個 Oracle JDK 兩個都要安裝上。然后輸入java -version應該可以看到

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

3.8.配置NTP服務(所有節點)

安裝NTP服務,使用yum install ntp安裝

修改ntp配置vi /etc/ntp.conf

Master設置server 210.72.145.44     #這是中國國家授時中心的IP

Slave1~2設置server master

設置開機時自動運行時間服務
chkconfig ntpd on
啟動或停止時間服務

service ntpd start
service ntpd stop
service ntpd restart

查看ntp服務狀態watch ntpq -p

4.安裝Cloudera Manager Server和Agent

4.1.創建cloudera-manager文件夾(1~7步在三個節點都要進行)

mkdir /opt/cloudera-manager

4.2.在master節點解壓安裝包至/opt/cloudera-manager默認目錄

tar -zxvf cloudera-manager-el6-cm5.8.0x8664.tar.gz -C /opt/cloudera-manager

4.3.創建用戶

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

4.4.創建log文件夾

mkdir /var/log/cloudera-scm-server
chown cloudera-scm:cloudera-scm /var/log/cloudera-scm-server

4.5.修改agent指向的sever地址

進入到cd /opt/cloudera-manager/cm-5.8.0/etc/cloudera-scm-agent

使用vim config.ini

server_host=localhost改為server_host=master

4.6.創建存放parcel的文件夾

mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

4.7.創建run/cloudera-scm-agent文件夾

mkdir /opt/cloudera-manager/cm-5.8.0/run/cloudera-scm-agent

如果有則不用創建。

以下開始是在Master上進行!

4.8.為Cloudera Manager 5建立數據庫 

將mysql-connector-java-5.1.6-bin.jar文件放到/opt/cm-5.8.0/share/cmf/lib/中。

cp mysql-connector-java-5.1.6-bin.jar /opt/cloudera-manager/cm-5.8.0/share/cmf/lib/

4.9.在master節點初始化CM5的數據庫

/opt/cloudera-manager/cm-5.8.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm

4.10.准備Parcels,用以安裝CDH5 

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

相關的文件如下:

  • CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel
  • CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
  • manifest.json

最后將CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1,重命名為CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha,這點必須注意,否則,系統會重新下載CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel.sha文件。

4.11.執行啟動腳本 

在master節點啟動服務端:

/opt/cloudera-manager/cm-5.8.0/etc/init.d/cloudera-scm-server start

在所有節點啟動Agent:

/opt/cloudera-manager/cm-5.8.0/etc/init.d/cloudera-scm-agent start

等待5分鍾,分別使用

/opt/cloudera-manager/cm-5.8.0/etc/init.d/cloudera-scm-server status

/opt/cloudera-manager/cm-5.8.0/etc/init.d/cloudera-scm-agent status

檢查server和agent狀態。如果出錯,比如死掉了之類的,去

/opt/cloudera-manager/cm-5.8.0/log里面查看日志,看看是哪里報錯了

如果agent報錯是以下這樣

Traceback (most recent call last):
  File "/opt/cloudera-manager/cm-5.8.0/lib64/cmf/agent/build/env/lib/python2.6/site-packages/cmf-5.8.0-py2.6.egg/cmf/agent.py", line 2163, in connect_to_new_supervisor self.get_supervisor_process_info() File "/opt/cloudera-manager/cm-5.8.0/lib64/cmf/agent/build/env/lib/python2.6/site-packages/cmf-5.8.0-py2.6.egg/cmf/agent.py", line 2185, in get_supervisor_process_info self.identifier = self.supervisor_client.supervisor.getIdentification() File "/usr/lib64/python2.6/xmlrpclib.py", line 1199, in __call__ return self.__send(self.__name, args) File "/usr/lib64/python2.6/xmlrpclib.py", line 1489, in __request verbose=self.__verbose File "/opt/cloudera-manager/cm-5.8.0/lib64/cmf/agent/build/env/lib/python2.6/site-packages/supervisor-3.0-py2.6.egg/supervisor/xmlrpc.py", line 470, in request '' ) ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>

重啟虛擬機即可解決,是因為有什么程序占用了那個端口。

5.配置CDH集群

PS:由於某些原因,安裝的時候我的主機名也就是Master是叫yao5,不要在意

驗證都正常工作后,就在瀏覽器打開http://master:7180進入CDH管理界面,由於CM Server的啟動需要花點時間,這里可能要等待一會(我最久等了20分鍾)才能訪問,默認的用戶名和密碼均為admin。

5.1.為CDH群集安裝指定主機

為CDH群集安裝指定主機這一步(忘截圖了==|||),要能直接在當前管理的主機能看到三台機子,分別為Master,Slave1,Slave2.才說明安裝正確了,如果搜不到,說明可能是你偷懶直接復制cm-5.8.0這個文件夾給其他主機了,因為在啟動的時候會生成一個SSID,是這個機子唯一的,所以搜索的時候可能會出問題。

5.2.群集安裝

接下來是群集安裝,這一步點選使用Parcel(建議),將網絡地址全部刪除,退出來后要能看到可以選擇本地包才說明本地配置對了,如果沒看到,可能有以下幾個原因

  1. 未將CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1,重命名為CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha
  2. cloudera,parcel-repoparcels三個文件夾的權限設置沒有設置好。

Screenshot-7_1.png

安裝完成后如上圖。

5.3.檢查主機正確性

Screenshot-8_1.png

如果出現和上圖一樣,就說明離成功又近了一步,如果出現了其他錯誤,比如出現JAVA版本不一致,想想你是不是自己安JDK了,這個地方會導致后面Spark安裝失敗,沒有例外,因為這里我們起碼重裝了5次,才發現必須用官方給的JDK。

按照給出的方式修改,輸入

echo 10 > /proc/sys/vm/swappiness

echo never > /sys/kernel/mm/transparent_hugepage/defrag

如果你想重啟后不出問題,可以按上面的修改其他那些文件。

修改完后點擊重新運行,得到以下樣子

Screenshot-9.png

是不是看起來很舒服。

5.4.選擇在集群上安裝的服務

Screenshot-10.png

我們選擇安裝含Spark的內核

5.5.自定義角色分配

Screenshot-11.png

注意將DataNode選成所有主機,還有下面的Zookeeper選成所有主機,其他默認就可以了。

5.6.數據庫設置

Screenshot-12.png

之前已經配置過數據庫,直接像上面那樣填即可,可能會在Hue測試連接的時候失敗,那就是你沒有安裝完MySQL包里share,最好全部安裝,防止報各種奇怪的錯。

5.7.所需目錄結構

Screenshot-13.png

默認即可,不用改動什么。

5.8.等待初始化和啟動服務

這個地方初始化可能會出各種問題

1.Spark報錯,一般都是JDK未使用官方版本。

2.Hive,Hbase,Hue等報錯,類似於下圖

Screenshot-14.png

解決辦法也就是將mysql-connector-java-5.1.6-bin.jar拷貝到hive存放jar文件的目錄重試即可。

cp mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib/

3.Oozie報錯,顯示timeout,這里是因為網絡環境太差,傳輸很慢,所以要把超時時間設置久一點,我們將超時時間調到了300s。

Screenshot-20.png

如上圖出現報錯,瀏覽器打開另一個標簽頁,進入http://master:7180,點擊oozie組件,搜索oozie_upload_sharelib_cmd_timeout parameter 和 change it to something bigger 然后將270改為600即可解決。

最后安裝成功

Screenshot.png

6.調試CDH集群

安裝完成后會因為電腦過卡,內存過小,硬盤空間不夠等等問題導致會有很多運行狀態不佳的主機

Screenshot-2.png

cdh_11

Screenshot-1_1.png

經過將內存閾值,分配空間閾值,報警閾值調小后即可解決,最后等待一會便可以達到全綠,滿足強迫症的你。

Screenshot-2_1.png

輸入http://master:8888 可以進入Hue中,使用Hive,Pig和Oozie

hue

在終端輸入spark-shell可以進入Spark-shell.

我們可以使用hdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \pi 10 100來測試mapreduce,運行結果如下

Screenshot-6.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM