CDH安裝

離線安裝Cloudera Manager 5和CDH5(最新版5.1.3) 徹底教程html

關於CDH和Cloudera Managerjava

CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop衆多分支中的一種,由Cloudera維護,基於穩定版本的Apache Hadoop構建,並集成了不少補丁,可直接用於生產環境。node

Cloudera Manager則是爲了便於在集羣中進行Hadoop等大數據處理相關的服務安裝和監控管理的組件,對集羣中主機、Hadoop、Hive、Spark等服務的安裝配置管理作了極大簡化。python

系統環境mysql

    1. 實驗環境: Mac下VMware虛擬機
    2. 操做系統: CentOS 6.5 x64 (至少內存2G以上,這裏內存不夠的同窗建議仍是整幾臺真機配置比較好,將CDH的全部組件所有安裝會佔用不少內存,我已開始設置的虛擬機內存是1G,安裝過程當中直接卡死了)
    3.  Cloudera Manager:5.1.3
    4.  CDH: 5.1.3

安裝說明linux

官方參考文檔:
http://www.cloudera.com/content/cloudera/en/documentation/cloudera-manager/v5-latest/Cloudera-Manager-Installation-Guide/cm5ig_install_path_C.html
web

官方共給出了3中安裝方式:第一種方法必需要求全部機器都能連網,因爲最近各類國外的網站被牆的厲害,我嘗試了幾回各類超時錯誤,巨耽誤時間不說,一旦失敗,重裝很是痛苦。第二種方法下載不少包。第三種方法對系統侵入性最小,最大優勢可實現全離線安裝,並且重裝什麼的都很是方便。後期的集羣統一包升級也很是好。這也是我之因此選擇離線安裝的緣由。sql

相關包的下載地址shell

Cloudera Manager下載地址:
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.1.3_x86_64.tar.gz,
下載信息:
http://www.cloudera.com/content/cloudera/en/documentation/cloudera-manager/v5-latest/Cloudera-Manager-Version-and-Download-Information/Cloudera-Manager-Version-and-Download-Information.html#cmvd_topic_1
數據庫

CDH安裝包地址:http://archive.cloudera.com/cdh5/parcels/latest/,因爲咱們的操做系統爲CentOS6.5,須要下載如下文件:

    1.  CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
    2.  CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
    3.  manifest.json

注意:與CDH4的不一樣,原來安裝CDH4的時候還須要下載IMPALA、Cloudera Search(SOLR),CDH5中將他們包含在一塊兒了,因此只須要下載一個CDH5的包就能夠了。

準備工做:系統環境搭建

如下操做均用root用戶操做。

若是用的最小化Centos7安裝 需安裝幾個命令

 yum -y install psmisc gcc ntp net-tools wget  vim

 

1. 網絡配置(全部節點

vi /etc/sysconfig/network修改hostname:

NETWORKING=yes

HOSTNAME=n1

經過service network restart重啓網絡服務生效。 

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

192.168.1.106   n1

192.168.1.107   n2

192.168.1.108   n3

注意:這裏須要將每臺機器的ip及主機名對應關係都寫進去,本機的也要寫進去,不然啓動Agent的時候會提示hostname解析錯誤。

關閉防火牆

systemctl stop firewalld.service
systemctl disable firewalld.service
修改主機名
hostnamectl set-hostname n2

2.打通SSH,設置ssh無密碼登錄(全部節點)

在主節點上執行ssh-keygen -t rsa一路回車,生成無密碼的密鑰對。

將公鑰添加到認證文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,並設置authorized_keys的訪問權限:chmod 600 ~/.ssh/authorized_keys。

scp文件到全部datenode節點:

scp ~/.ssh/authorized_keys root@n2:~/.ssh/        若是其餘節點沒有ssh目錄  直接把目錄複製過去便可

測試:在主節點上ssh n2,正常狀況下,不須要密碼就能直接登錄進去了。

3.安裝Oracle的Java(全部節點)

CentOS,自帶OpenJdk,不過運行CDH5須要使用Oracle的Jdk,須要Java 7的支持。

因爲使用的最小化系統,Centos7中並無而後java自帶包,這裏必須注意。。便是沒有 也用yum -y install java  系統會自動解決依賴性關係,這點很重要,若是單用官網RPM包安裝java 後期會有不少日誌報錯,缺乏python之類的包,下圖就是 提早用yum安裝的java 。而後把java包安裝

  

由於是用yum裝的  用java -version能夠查看版本。可是javac命令確不能用 因此在這把那些java的包卸載 ,使用rpm -e --nodeps 包名卸載之。 只剩下圖2個包便可  (本身的笨辦法,在這裏吃了不少虧)

   

卸載自帶的OpenJdk,使用rpm -qa | grep java查詢java相關的包,

Oracle的官網下載jdk的rpm安裝包,並使用rpm -ivh 包名安裝之。  這裏我下載的jdk-8u77-linux-x64.rpm

配置環境變量

export JAVA_HOME=/usr/java/jdk1.8.0_77
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

 

而後source 讓其當即生效

以上配置都是全部節點都須要配置。能夠在主節點配置好。scp到其餘節點 ,快速配置

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

CentOS 7的yum源中貌似沒有正常安裝mysql時的mysql-sever文件,須要去官網上下載

1
2
3
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server

成功安裝以後重啓mysql服務

1
# service mysqld restart
Centos7中開機啓動  systemctl enable mysqld.service
 (如需關閉開啓自啓動 systemcal disable mysqld.server 便可      systemctl list-unit-files 查看開機啓動服務)

service mysqld start啓動mysql服務,並根據提示設置root的初試密碼:mysqladmin -u root password 'xxxx'。

mysql -uroot -pxxxx進入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'@'n1'identified by'123'with grant option;  (須要一下2條命令,否則後面驗證數據庫 就會出錯)

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

flush privileges;

5.關閉防火牆和SELinux

注意: 須要在全部的節點上執行,由於涉及到的端口太多了,臨時關閉防火牆是爲了安裝起來更方便,安裝完畢後能夠根據須要設置防火牆策略,保證集羣安全。

關閉防火牆:

 


systemctl stop firewalld.service #中止firewall
 
systemctl disable firewalld.service #禁止firewall開機啓動 

 

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

6.全部節點配置NTP服務

集羣中全部主機必須保持時間同步,若是時間相差較大會引發各類問題。具體思路以下:

master節點做爲ntp服務器與外界對時中心同步時間,隨後對全部datanode節點提供時間同步服務。

全部datanode節點以master節點爲基礎同步時間。

全部節點安裝相關組件:yum install ntp。完成後,配置開機啓動:chkconfig ntpd on,檢查是否設置成功:chkconfig --list ntpd其中2-5爲on狀態就表明成功。

rpm 先查詢本機是否已經有ntp包。 

若是有 /bin/systemctl restart ntpd.service 啓動服務 並查看運行情況

主節點配置

在配置以前,先使用ntpdate手動同步一下時間,省得本機與對時中心時間差距太大,使得ntpd不能正常同步。這裏選用 ntpdate -u s2m.time.edu.cn

ntp服務只有一個配置文件,配置好了就OK。這裏只給出有用的配置,不須要的配置都用#注掉,這裏就不在給出:

driftfile /var/lib/ntp/drift

restrict 127.0.0.1

restrict -6 ::1

restrict default nomodify notrap

server s2m.time.edu.cn

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

配置文件完成,保存退出,啓動服務,執行以下命令:service ntpd start

檢查是否成功,用ntpstat命令查看同步狀態,出現如下狀態表明啓動成功:

synchronised to NTP server () at stratum 2

time correct to within 74 ms

polling server every 128 s

若是出現異常請等待幾分鐘,通常等待5-10分鐘才能同步。

配置ntp客戶端(全部datanode節點)

driftfile /var/lib/ntp/drift

restrict 127.0.0.1

restrict -6 ::1

restrictdefault kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

server n1  

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

ok保存退出,請求服務器前,請先使用ntpdate手動同步一下時間:ntpdate -u n1 (主節點ntp服務器)

這裏可能出現同步失敗的狀況,請不要着急,通常是本地的ntp服務器尚未正常啓動,通常須要等待5-10分鐘才能夠正常同步。啓動服務:service ntpd start

由於是鏈接內網,此次啓動等待的時間會比master節點快一些,可是也須要耐心等待一下子。

正式開工

安裝Cloudera Manager Server 和Agent

主節點解壓安裝

cloudera manager的目錄默認位置在/opt下,解壓:tar xzvf cloudera-manager*.tar.gz將解壓後的cm-5.1.3和cloudera目錄放到/opt目錄下。

Cloudera Manager 5創建數據庫

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

在主節點初始化CM5的數據庫:

/opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pxxxx --scm-host localhost scm scm scm

Agent配置

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

同步Agent到其餘節點

scp -r /opt/cm-5.1.3 root@n2:/opt/

在全部節點建立cloudera-scm用戶

useradd --system --home=/opt/cm-5.5.0/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須要手動建立)。

相關的文件以下:

    1.  CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
    2.  CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
    3.  manifest.json

最後將CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1,重命名爲CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha,這點必須注意,不然,系統會從新下載CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel文件。

相關啓動腳本

經過/opt/cm-5.5.0/etc/init.d/cloudera-scm-server start啓動服務端。

經過/opt/cm-5.5.0/etc/init.d/cloudera-scm-agent start啓動Agent服務。

咱們啓動的實際上是個service腳本,須要中止服務將以上的start參數改成stop就能夠了,重啓是restart。

CDH5的安裝配置

Cloudera Manager Server和Agent都啓動之後,就能夠進行CDH5的安裝配置了。

這時能夠經過瀏覽器訪問主節點的7180端口測試一下了(因爲CM Server的啓動須要花點時間,這裏可能要等待一會才能訪問),默認的用戶名和密碼均爲admin:

 

 

能夠看到,免費版本的CM5已經沒有原來50個節點數量的限制了。

 

各個Agent節點正常啓動後,能夠在當前管理的主機列表中看到對應的節點。選擇要安裝的節點,點繼續。

 

接下來,出現如下包名,說明本地Parcel包配置無誤,直接點繼續就能夠了。

 

點擊,繼續,若是配置本地Parcel包無誤,那麼下圖中的已下載,應該是瞬間就完成了,而後就是耐心等待分配過程就好了,大約10多分鐘吧,取決於內網網速。

 

接下來是服務器檢查,可能會遇到如下問題:

Cloudera 建議將/proc/sys/vm/swappiness 設置爲0。當前設置爲60。使用 sysctl 命令在運行時更改該設置並編輯/etc/sysctl.conf 以在重啓後保存該設置。您能夠繼續進行安裝,但可能會遇到問題,Cloudera Manager 報告您的主機因爲交換運行情況不佳。如下主機受到影響:

經過echo 0 > /proc/sys/vm/swappiness便可解決。

 

 

接下來是選擇安裝服務:

 

 

服務配置,通常狀況下保持默認就能夠了(Cloudera Manager會根據機器的配置自動進行配置,若是須要特殊調整,自行進行設置就能夠了):

 

接下來是數據庫的設置,檢查經過後就能夠進行下一步的操做了:

 

下面是集羣設置的審查頁面,我這裏都是保持默認配置的:

 

終於到安裝各個服務的地方了,注意,這裏安裝Hive的時候可能會報錯,由於咱們使用了MySql做爲hive的元數據存儲,hive默認沒有帶mysql的驅動,經過如下命令拷貝一個就好了:

cp /opt/cm-5.1.3/share/cmf/lib/mysql-connector-java-5.1.33-bin.jar /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib/   切記:給最多權限,以避免發生錯誤

 

服務的安裝過程大約半小時內就能夠完成:

 

安裝完成後,就能夠進入集羣界面看一下集羣的當前情況了。

這裏可能會出現沒法發出查詢:對 Service Monitor 的請求超時的錯誤提示,若是各個組件安裝沒有問題,通常是由於服務器比較卡致使的,過一會刷新一下頁面就行了:

 

測試

在集羣的一臺機器上執行如下模擬Pi的示例程序:

sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100

執行過程須要花必定的時間,經過YARN的後臺也能夠看到MapReduce的執行狀態:

說明: https://images0.cnblogs.com/blog/312243/201410/130121439669223.png

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

Number of Maps  = 10

Samples per Map = 100

Wrote input for Map #0

Wrote input for Map #1

Wrote input for Map #2

Wrote input for Map #3

Wrote input for Map #4

Wrote input for Map #5

Wrote input for Map #6

Wrote input for Map #7

Wrote input for Map #8

Wrote input for Map #9

Starting Job

14/10/13 01:15:34 INFO client.RMProxy: Connecting to ResourceManager at n1/192.168.1.161:8032

14/10/13 01:15:36 INFO input.FileInputFormat: Total input paths to process : 10

14/10/13 01:15:37 INFO mapreduce.JobSubmitter: number of splits:10

14/10/13 01:15:39 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1413132307582_0001

14/10/13 01:15:40 INFO impl.YarnClientImpl: Submitted application application_1413132307582_0001

14/10/13 01:15:40 INFO mapreduce.Job: The url to track the job: http://n1:8088/proxy/application_1413132307582_0001/

14/10/13 01:15:40 INFO mapreduce.Job: Running job: job_1413132307582_0001

14/10/13 01:17:13 INFO mapreduce.Job: Job job_1413132307582_0001 running in uber mode : false

14/10/13 01:17:13 INFO mapreduce.Job:  map 0% reduce 0%

14/10/13 01:18:02 INFO mapreduce.Job:  map 10% reduce 0%

14/10/13 01:18:25 INFO mapreduce.Job:  map 20% reduce 0%

14/10/13 01:18:35 INFO mapreduce.Job:  map 30% reduce 0%

14/10/13 01:18:45 INFO mapreduce.Job:  map 40% reduce 0%

14/10/13 01:18:53 INFO mapreduce.Job:  map 50% reduce 0%

14/10/13 01:19:01 INFO mapreduce.Job:  map 60% reduce 0%

14/10/13 01:19:09 INFO mapreduce.Job:  map 70% reduce 0%

14/10/13 01:19:17 INFO mapreduce.Job:  map 80% reduce 0%

14/10/13 01:19:25 INFO mapreduce.Job:  map 90% reduce 0%

14/10/13 01:19:33 INFO mapreduce.Job:  map 100% reduce 0%

14/10/13 01:19:51 INFO mapreduce.Job:  map 100% reduce 100%

14/10/13 01:19:53 INFO mapreduce.Job: Job job_1413132307582_0001 completed successfully

14/10/13 01:19:56 INFO mapreduce.Job: Counters: 49

    File System Counters

        FILE: Number of bytes read=91

        FILE: Number of bytes written=1027765

        FILE: Number ofread operations=0

        FILE: Number of large read operations=0

        FILE: Number ofwrite operations=0

        HDFS: Number of bytes read=2560

        HDFS: Number of bytes written=215

        HDFS: Number ofread operations=43

        HDFS: Number of large read operations=0

        HDFS: Number ofwrite operations=3

    Job Counters

        Launched map tasks=10

        Launched reduce tasks=1

        Data-local map tasks=10

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

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

        Total time spent by all map tasks (ms)=118215

        Total time spent by all reduce tasks (ms)=11894

        Total vcore-seconds taken by all map tasks=118215

        Total vcore-seconds taken by all reduce tasks=11894

        Total megabyte-seconds taken by all map 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

        Input split 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

        GC time elapsed (ms)=1269

        CPU time 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 in 262.659 seconds

Estimated value of Pi is 3.14800000000000000000

檢查Hue

首次登錄Hue會讓設置一個初試的用戶名和密碼,設置好,登錄到後臺,會作一次檢查,一切正常後會提示:

說明: https://images0.cnblogs.com/blog/312243/201410/130130098264300.png

到這裏代表咱們的集羣可使用了。

 

如上若是安裝Oozie失敗:

出現  

 

 

Java Connect to database Error:ClassNotFoundException:com.mysql.jdbc.Driver 錯誤  

須要本身先建立一個oozie數據庫
 $ mysql -u root -p  
 Enter password: ******  
  
 mysql> create database oozie;  
Query OK, 1 row affected (0.03 sec)  
 
mysql>  grant all privileges on oozie.* to 'oozie'@'localhost' identified by 'oozie';  
Query OK, 0 rows affected (0.03 sec)  
 
mysql>  grant all privileges on oozie.* to 'oozie'@'%' identified by 'oozie';  
Query OK, 0 rows affected (0.03 sec)  
並刷新數據庫
把下載好的mysql的jdbc驅動複製到/var/lib/oozie/    這裏我給了 文件777權限 防止出錯
cp /home/mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /var/lib/oozie/  
 chmod 777 mysql-connector-java-5.1.38-bin.jar   
而後在重試 web頁面 安裝服務 成功安裝

 

hadoop2.6徹底分佈式安裝文檔

 ssh和jdk的配置上面參照便可  

這裏主要列出配置文件的內容

 

useradd hadoop (建立用戶)

passwd hadoop (設置密碼,爲簡單起見,3臺機器上的hadoop密碼最好設置成同樣,好比hadoop123)

爲了方便,建議將hadoop加入root用戶組,操做方法:

先以root身份登陸,而後輸入

usermod -g root hadoop ,執行完後hadoop即歸屬於root組了,能夠再輸入

id hadoop 查看輸出驗證一下,若是看到相似下面的輸出:

uid=502(hadoop) gid=0(root) 組=0(root)

就表示OK了 


 

http://mirrors.cnnic.cn/apache/hadoop/common/ 下載,本教程選擇的是 2.6.0 版本,下載時請下載 hadoop-2.x.y.tar.gz這個格式的文件,這是編譯好的,另外一個包含 src 的則是 Hadoop 源代碼,須要進行編譯纔可以使用。

下載時強烈建議也下載 hadoop-2.x.y.tar.gz.mds 這個文件,該文件包含了檢驗值可用於檢查 hadoop-2.x.y.tar.gz 的完整性,不然若文件發生了損壞或下載不完整,Hadoop 將沒法正常運行。

下載後使用MD5校驗是否完整

 

 

這裏我是下載的hadoop2.6 並解壓放置到/usr/local/hadoop  

    1. tar -zxf hadoop-2.6.0.tar.gz -C /usr/local # 解壓到/usr/local中
    2. cd /usr/local/
    3. mv ./hadoop-2.6.0/ ./hadoop # 將文件夾名改成hadoop
    4. chown -R hadoop:hadoop ./hadoop # 修改文件權限

 並檢查是否可用

    1. cd /usr/local/hadoop
    2. ./bin/hadoop version

 

一、進/usr/local/hadoop/etc/hadoop目錄中,編輯hadoop-env.sh文件,使用vim  hadoop-env.sh,修改內容以下:
     export JAVA_HOME=/usr/java/jdk1.6.0_31

二、編輯yarn-env.sh        vim  yarn-env.sh,修改內容以下:
     JAVA_HOME=/usr/java/jdk1.6.0_31

三、編輯core-site.xml,修改內容以下:  這裏自行創建/home/hadoop/tmp
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>

四、編輯hdfs-site.xml,編輯內容以下:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>

五、編輯mapred-site.xml(須要複製mapred-site.xml.template,並命名爲mapred-site.xml),編輯內容以下:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>n1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>n1:19888</value>
</property>

六、編輯yarn-site.xml文件,修改內容以下:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>n1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>n1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>n1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>n1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>n1:8088</value>
</property>

七、編輯slaves文件,修改內容以下:
n2
n3

八、複製hadoop2.6到另外兩個節點,

九、在master節點格式化hdfs文件
./bin/hdfs namenode -format
      成功格式化後,以下圖:
 


十、啓動hadoop
./sbin/start-all.sh
      使用jps查看運行的進程,表示master和slave節點成功運行的進程以下:
     master:
 


slave1:
 

slave2:
 


至此hadoop2.6集羣搭建完成。 搭建完成後 訪問網站http://192.168.1.120:50070

 

另外也能夠經過 bin/hdfs dfsadmin -report 查看hdfs的狀態報告

 

a) master(即:namenode節點)若要從新格式化,請先清空各datanode上的data目錄(最好連tmp目錄也一塊兒清空),不然格式化完成後,啓動dfs時,datanode會啓動失敗

b) 若是以爲master機器上只運行namenode比較浪費,想把master也當成一個datanode,直接在slaves文件裏,添加一行master便可

c) 設置hadoop環境變量 

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

 

安裝HIVE項目

首先創建hive庫 

 

-- 建立 hive 數據庫

 mysql> CREATE DATABASE hive; 

-- 建立 hive 用戶,並賦予訪問 hive 數據庫的權限

mysql> GRANT ALL PRIVILEGES ON hive.*TO'hive'@'localhost' IDENTIFIED BY'hive'; 

mysql> FLUSH PRIVILEGES; 

-- 設置 binary log 的格式:

mysql>setglobal binlog_format=MIXED;

下載HIve並配置環境變量

tar xzvf hive-2.0.tar.gz -C /home/hadoop  

並mv爲hive    

-- 在 .bashrc 或是 .bash_profile 文件中增長如下設置:

export HIVE_HOME=/home/hadoop/hive

export PATH=$PATH:$HIVE_HOME/bin 

修改配置文件

cd /home/hadoop/
cp hive-default.xml.template hive-site.xml
cp hive-log4j.properties.template hive-log4j.propertie
配置文件修改以下
-- cat hive-1.1.0-cdh5.4.7/conf/hive-site.xml
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>hive.server2.thrift.port</name><value>10000</value></property><property><name>hive.server2.thrift.bind.host</name><value>n1</value></property><property><name>hive.server2.authentication</name><value>NONE</value><description>
        Client authentication types.
           NONE: no authentication check
           LDAP: LDAP/AD based authentication
           KERBEROS: Kerberos/GSSAPI authentication
           CUSTOM: Custom authentication provider
                   (Use with property hive.server2.custom.authentication.class)
      </description></property><property><name>hive.server2.enable.doAs</name><value>true</value></property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><description>username to use against metastore database</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value><description>password to use against metastore database</description></property></configuration>

下載mysql jdb jar包
wget http://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.37.tar.gz 

tar xvzf mysql-connector-java-5.1.37.tar.gz 

cp mysql-connector-java-5.1.37/mysql-connector-java-5.1.37-bin.jar $HIVE_HOME/lib
在啓動hive  進入bin目錄執行hive 

 

若是這裏報錯  [ERROR] Terminal initialization failed; falling back to unsupported

 

 

 

緣由是hadoop目錄下存在老版本jline:

/hadoopshare/hadoop/yarn/lib:

-rw-r--r-- 1 root root   87325 Mar 10 18:10 jline-0.9.94.jar

 

解決方法是:

將hive下的新版本jline的JAR包拷貝到hadoop下:

cp /home/hive/lib/jline-2.12.jar /usr/local/hadoop/share/hadoop/yarn/lib 

並將/usr/local/hadoop/share/hadoop/yarn/lib 內的jline包更名 以下 便可

-rw-r--r-- 1 root root   87325 Mar 10 18:10 jline-0.9.94.jar.bak
-rw-r--r-- 1 root root  213854 Mar 11 22:22 jline-2.12.jar

 最後設置的環境變量爲

export JAVA_HOME=/usr/java/jdk1.8.0_77
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$PATH:$HIVE_HOME/bin

 

 

 

本身總結的各類小毛病處理  

在配置以前  清除服務項目安裝在哪個文件目錄下。 這樣出了問題好排查

 

1.在對namenode格式化以前,要確保dfs.name.dir參數指定的目錄不存在。 查看配置文件
Hadoop這樣作的目的是防止錯誤地將已存在的集羣格式化了
2.若是哪一個服務啓動失敗就去看日誌。 看是哪一步格式化錯誤了。 通常hadoop的配置文件都是其項目內的xml文件。例如 hdfs-site.xml 文件    
3.若是啓動hive失敗。首先創建hive數據,在配置文件 hive-site.xml  配置數據庫選項
 
若是在安裝的過程當中出現YARN啓動服務失敗  查看日誌  
例如:Name node is in safe mode 錯誤。切換到hadoop 用戶  由於這是處於安全模式。  輸入 hadoop dfsadmin -safemode leave可關閉模式
若是仍是解決不了。可操做
是CDH 的BUG,須要修改文件 <CM-PATH>/lib64/cmf/agent/src/cmf/util.py

將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)

就行了
 
 
 

 

相關文章
相關標籤/搜索