原帖地址: http://blog.csdn.net/nsrainbow/article/details/36629741
接上一個教程:http://blog.csdn.net/nsrainbow/article/details/36629339
本教程是在 Centos6 下使用yum來安裝 CDH5 版本號的 hadoop 的教程。 假設沒有加入yum源的請參考上一個教程:http://blog.csdn.net/nsrainbow/article/details/36629339
Hadoop架構圖

- NameNode、DataNode和Client
NameNode能夠看作是分布式文件系統中的管理者,主要負責管理文件系統的命名空間、集群配置信息和存儲塊的復制等。NameNode會將文件系統的Meta-data存儲在內存中,這些信息主要包含了文件信息、每個文件相應的文件塊的信息和每個文件塊在DataNode的信息等。
DataNode是文件存儲的基本單元,它將Block存儲在本地文件系統中,保存了Block的Meta-data,同一時候周期性地將全部存在的Block信息發送給NameNode。
Client就是須要獲取分布式文件系統文件的應用程序。 - 文件寫入
Client向NameNode發起文件寫入的請求。
NameNode依據文件大小和文件塊配置情況。返回給Client它所管理部分DataNode的信息。
Client將文件划分為多個Block,依據DataNode的地址信息。按順序寫入到每個DataNode塊中。 - 文件讀取
Client向NameNode發起文件讀取的請求
NameNode返回文件存儲的DataNode的信息。
Client讀取文件信息。
開始安裝非HA模式
1. 加入庫key
$ sudo rpm --import http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
2. 安裝CDH5
2.1 安裝Resource Manager host
$ sudo yum clean all
$ sudo yum install hadoop-yarn-resourcemanager -y
2.2 安裝 NameNode host
$ sudo yum clean all
$ sudo yum install hadoop-hdfs-namenode -y
2.3 安裝 Secondary NameNode host
$ sudo yum clean all
$ sudo yum install hadoop-hdfs-secondarynamenode -y
2.4 安裝 nodemanager , datanode, mapreduce (官方說明是在除了 Resource Manager以外的機子上裝這些,可是我們如今就一台機子。所以就在這台機子上裝)
$ sudo yum clean all
$ sudo yum install hadoop-yarn-nodemanager hadoop-hdfs-datanode hadoop-mapreduce -y
2.5 安裝 hadoop-mapreduce-historyserver hadoop-yarn-proxyserver (官方說是在cluster中挑一台做host,可是我們就一台,就直接在這台上裝)
$ sudo yum clean all
$ sudo yum install hadoop-mapreduce-historyserver hadoop-yarn-proxyserver -y
2.6 安裝 hadoop-client (用戶連接hadoop的client,官方說在client裝,我們就直接在這台上裝)
$ sudo yum clean all
$ sudo yum install hadoop-client -y
3. 部署CDH
3.1 配置計算機名(默認是localhost)
先看看自己的hostname有沒有設置$ sudo vim /etc/sysconfig/network
HOSTNAME=localhost.localdomain
假設HOSTNAME是 localhost.localdomain的話就改一下
HOSTNAME=myhost.mydomain.com
然后再執行下,保證馬上生效
$ sudo hostname myhost.mydomain.com
檢查一下是否設置生效
$ sudo uname -a
3.2 改動配置文件
先切換到root用戶。免得每行命令之前都加一個sudo,所以下面教程都是用root角度寫的$ sudo su -
$ cd /etc/hadoop/conf
$ vim core-site.xml
在 <configuration>...</configuration> 中添加
<property>
<name>fs.defaultFS</name>
<value>hdfs://myhost.mydomain.com:8020</value>
</property>
編輯hdfs-site.xml
$ vim hdfs-site.xml
在 <configuration>...</configuration> 中加入
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
3.3 配置存儲目錄
在 namenode 機子上配置 hdfs.xml 用來存儲name元數據(我們僅僅有一台機,所以既是namenode又是datanode)$ vim hdfs-site.xml
改動dfs.name.dir 為 dfs.namenode.name.dir(dfs.name.dir已經過時),並改動屬性值,一般來說我們的 /data 或者 /home/data 都是掛載大硬盤數據用的,所以把存儲目錄指向這個路徑里面的目錄比較較好
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop-hdfs/1/dfs/nn</value>
</property>
在 datanode上配置 hdfs.xml 用來存儲實際數據(我們僅僅有一台機,所以既是namenode又是datanode)
$ vim hdfs-site.xml
添加dfs.datanode.data.dir(dfs.data.dir已經過時)配置
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop-hdfs/1/dfs/dn,file:///data/hadoop-hdfs/2/dfs/dn</value>
</property>
建立這些目錄
$ mkdir -p /data/hadoop-hdfs/1/dfs/nn
$ mkdir -p /data/hadoop-hdfs/1/dfs/dn
$ mkdir -p /data/hadoop-hdfs/2/dfs/dn
改動目錄用戶
$ chown -R hdfs:hdfs /data/hadoop-hdfs/1/dfs/nn /data/hadoop-hdfs/1/dfs/dn /data/hadoop-hdfs/2/dfs/dn
改動目錄權限
$ chmod 700 /data/hadoop-hdfs/1/dfs/nn
3.4 格式化namenode
$ sudo -u hdfs hdfs namenode -format
3.5 配置 Secondary NameNode
在hdfs-site.xml中加入<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:50070</value>
<description>
The address and the base port on which the dfs NameNode Web UI will listen.
</description>
</property>
3.6 啟動hadoop
$ for x in `cd /etc/init.d ; ls hadoop-*` ; do sudo service $x start ; done
Starting Hadoop nodemanager: [ OK ]
starting nodemanager, logging to /var/log/hadoop-yarn/yarn-yarn-nodemanager-xmseapp03.ehealthinsurance.com.out
Starting Hadoop proxyserver: [ OK ]
starting proxyserver, logging to /var/log/hadoop-yarn/yarn-yarn-proxyserver-xmseapp03.ehealthinsurance.com.out
Starting Hadoop resourcemanager: [ OK ]
starting resourcemanager, logging to /var/log/hadoop-yarn/yarn-yarn-resourcemanager-xmseapp03.ehealthinsurance.com.out
Starting Hadoop datanode: [ OK ]
starting datanode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-datanode-xmseapp03.ehealthinsurance.com.out
Starting Hadoop namenode: [ OK ]
starting namenode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-namenode-xmseapp03.ehealthinsurance.com.out
Starting Hadoop secondarynamenode: [ OK ]
starting secondarynamenode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-secondarynamenode-xmseapp03.ehealthinsurance.com.out
...
都成功后用jps看下
$jps
17033 NodeManager
16469 DataNode
17235 ResourceManager
17522 JobHistoryServer
16565 NameNode
16680 SecondaryNameNode
17593 Jps
4 client測試
打開你的瀏覽器輸入 http://<hadoop server ip>:50070假設看到
Hadoop Administration
DFS Health/Status
這種字樣就成功進入了hadoop的命令控制台