cdh5.1.0 yum安裝總結

接觸過hadoop的人都知道hadoop的搭建過程很是麻煩,尤爲是對於初學者,幸運的是有cloudera這樣的公司爲咱們作了一些發行版,咱們能夠直接使用apt-get,yum等包管理工具進行安裝。
下面我要說得是,在centos6.5 64位下,經過yum安裝cdh5.1.0,須要注意的是5.1.0默認是mapred2(也就是yarn模式),我這裏安裝的是mapred1,也就是傳統的hadoop模式。html

1.系統要求

先看看cloudera官方說明,最好是按照人家說得版原本,畢竟人家測試過了,沒問題呀,你要是非用不支持的版本,註定是一場折騰之路。java

這裏我重點說下/etc/hosts的配置,在namenode與jobtracker所在的機器上,必定不要有node

127.0.0.0 <hostname>

這條記錄,而且要把全部子結點的ip與hostname配進去。
不然你會遇到各類錯誤,下面是一個錯誤:apache

2015-02-05 12:35:30,145 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Time to add replicas to map for block pool BP-2009649341-10.6.8.213-1423108250285 on volume /data/dfs/dn/current: 1ms
2015-02-05 12:35:30,145 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Total time to add all replicas to map: 6ms
2015-02-05 12:35:30,148 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool BP-2009649341-10.6.8.213-1423108250285 (Datanode Uuid null) service to /10.6.8.213:8020 beginning handshake with NN
2015-02-05 12:35:33,219 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool BP-2009649341-10.6.8.213-1423108250285 (Datanode Uuid null) service to /10.6.8.213:8020 Datanode denied communication with namenode because hostname cannot be resolved (ip=10.6.3.175, hostname=10.6.3.175): DatanodeRegistration(0.0.0.0, datanodeUuid=177b02e8-6692-4c69-8e4d-d0d14566ce72, infoPort=50075, ipcPort=50020, storageInfo=lv=-55;cid=CID-dcde3b04-134d-42c2-ac61-143ef3869377;nsid=1437835541;c=0)
        at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:802)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:4314)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:980)
        at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:92)
        at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService$2.callBlockingMethod(DatanodeProtocolProtos.java:28057)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1026)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1986)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1982)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1554)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1980)

這個錯誤,是在啓動namenode後,啓動datanode時的錯誤,從錯誤信息來看,這時在datanode向namenode註冊時的錯。centos

2.配置源

/etc/yum.repo.d中建立一個repo文件,內容爲ide

[cloudera-cdh5]
name=Cloudera's Distribution for Hadoop, Version 5
baseurl= http://archive.cloudera.com/cdh5/redhat/5/x86_64/cdh/5.1.0/
gpgkey = http://archive.cloudera.com/cdh5/redhat/5/x86_64/cdh/RPM-GPG-KEY-cloudera
gpgcheck = 0

配置源後,執行工具

yum clean all

來更新源,確保系統倉庫中的軟件爲最新版。oop

3.下載hadoop組件

hadoop2.0把各個模塊都給分出來了。hdfs、mapred、yarn、client都是做爲獨立的模塊的,能夠單獨安裝。測試

yum -y install hadoop-hdfs-namenode
yum -y install hadoop-0.20-mapreduce-jobtracker
yum -y install hadoop-hdfs-datanode
yum -y install hadoop-0.20-mapreduce-tasktracker

你們能夠根據機器的角色,安裝不一樣的組件。
在客戶端執行hadoop任務時,須要安裝ui

yum install hadoop-client

4. 修改配置文件

經過yum安裝,配置文件默認在/etc/hadoop/conf文件夾中。須要修改下面三個配置文件:
core-site.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:8020</value>
</property>

hdfs-site.xml

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/dfs/nn</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///data/dfs/dn</value>
</property>

mapred-site.xml

<property>  
    <name>mapred.job.tracker</name>  
    <value>master:8021</value>  
</property>  
<property>
    <name>mapred.local.dir</name>
    <value>/data/mapred/local</value>
</property>

經過yum安裝,conf文件夾中默認沒有hadoop-env.sh這個文件,咱們能夠從其餘地方拷過來,在/usr/lib/hadoop-0.20-mapreduce/example-confs/conf.secure/hadoop-env.sh有個參考配置,咱們能夠把它拷貝過來,而且開頭添加下面的配置:

export JAVA_HOME=/usr/java/default
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-0.20-mapreduce

/usr/java/default是我機器上java的安裝目錄,大家可根據實際狀況進行修改。

5.建立hdfs、mapred所需文件夾

在上面的配置中,hdfs-site.xml中制定了namenode與datanode的存放數據的目錄,下面進行建立

mkdir -p /data/dfs/nn /data/dfs/dn 
chown hdfs:hdfs /data/dfs/nn /data/dfs/dn

mapred-site.xml中指定了執行任務時臨時數據的存放目錄,下面進行建立

mkdir -p /data/mapred/local
chown mapred:mapred /data/mapred/local

這裏須要說明的是,在hadoop2.0中,再也不推薦用一個hadoop帳戶來啓動全部進程,推薦使用hdfs用戶操做hdfs相關進程,mapred用戶操做mapred相關進程,yarn用戶操做yarn相關進程,在咱們用yum安裝各個組件時,相應的用戶會替咱們自動建立。

6.啓動進程

首先時在主結點啓動namenode

sudo -u hdfs hdfs namenode -format
service hadoop-hdfs-namenode start

以後,在子結點啓動datanode

service hadoop-hdfs-datanode start

這樣,hdfs就能工做了。下面建立mapred在hdfs上所需的目錄

sudo -u hdfs hdfs dfs -mkdir /tmp
sudo -u hdfs hdfs dfs -chmod -R 1777 /tmp

這時,就能夠在主結點上啓動jobtracker了

service hadoop-0.20-mapreduce-jobtracker start

啓動jobtracker後,會在hdfs的tmp下生成以下結構的目錄:
hdfs jobtracker tmp
最後,在子結點上啓動tasktracker就能夠了。

service hadoop-0.20-mapreduce-tasktracker start
相關文章
相關標籤/搜索