標籤:
一直在忙Android FrameWork,終於閑了一點,利用空餘時間研究了一下Hadoop,並且在自己和同事的電腦上搭建了分布式叢集,現在更新一下blog,分享自己的成果。
一 .環境
1.作業系統:Ubuntu 12.04 LTS 64位
2.Java版本:openjdk-7-jdk
3.Hadoop版本:2.6.0
4.結點資訊:
機器名 |
IP |
hostname |
作用 |
master |
10.13.14.83 |
rdcdz140395 |
NameNode and JobTracker |
slave-1 |
10.13.14.110 |
rdjdz110716 |
DataNode and TaskTracker |
slave-2 |
10.13.14.127 |
rdjdz120312 |
DataNode and TaskTracker |
5.我在每台機器上建立了群組hadoop和使用者hduser,並將hduser加入到hadoop群組中,方便管理。
二.安裝
1.在這3台電腦上都安裝 jdk,ssh,maven
sudo apt-get updatesudo apt-get install openjdk-7-jdksudo apt-get install sshsudo apt-get install rsyncsudo apt-get install mavensudo apt-get update
2.在這3台電腦上都添加Hadoop使用者組和使用者hduser
sudo addgroup hadoopsudo adduser --ingroup hadoop hdusersudo adduser hduser sudo
然後切換到hduser賬戶,進行下面的操作。
su - hduser
3.修改叢集中所有機器的/etc/hosts
10.13.14.83 master 10.13.14.110 slave-1 10.13.14.127 slave-2
如所示
4.建立SSH無密碼登入
在Hadoop啟動以後,namenode是通過SSH(Secure Shell)來啟動和停止各個節點上的各種守護進程的,這就需要在節點之間執行指令的時候是不需要輸入密碼的方式,故我們需要配置SSH使用無密碼公開金鑰認證的方式。
使用下面的命令會在~/.ssh/目錄下產生 id_dsa.pub檔案,如果我們希望master 結點不要求輸入密碼就能使用ssh串連到slave結點,我們需要將master結點上的~/.ssh/id_dsa.pub的內容,添加到slave結點的~/.ssh,並將id_dsa.pub重新命名為authorized_keys
ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsascp -r .ssh/id_dsa.pub 10.13.14.110:~/.ssh/authorized_keysscp -r .ssh/id_dsa.pub 10.13.14.127:~/.ssh/authorized_keys
5.下載&安裝Hadoop
下載Hadoop 解壓到master伺服器的/home/hduser目錄下(配置好master結點後再將其複製到其它的伺服器上,一般來說,群集中所有的hadoop都安裝在同一目錄下)
cd ~wget http://www.trieuvan.com/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gzsudo tar -xzvf hadoop-2.6.0.tar.gz -C /usr/localcd /usr/localsudo mv hadoop-2.6.0 hadoopsudo chown -R hduser:hadoop hadoop
6.配置Hadoop環境
(1)修改.bashrc
vim ~/.bashrc
將下面的內容複寫到.bashrc最後一行
## Hadoop variables ,start of pasteexport JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64export HADOOP_INSTALL=/usr/local/hadoopexport PATH=$PATH:$HADOOP_INSTALL/binexport PATH=$PATH:$HADOOP_INSTALL/sbinexport HADOOP_MAPRED_HOME=$HADOOP_INSTALLexport HADOOP_COMMON_HOME=$HADOOP_INSTALLexport HADOOP_HDFS_HOME=$HADOOP_INSTALLexport YARN_HOME=$HADOOP_INSTALL###end of paste
7.配置Hadoop
(1)修改 hadoop-env.sh
cd /usr/local/hadoop/etc/hadoop vim hadoop-env.sh
將下面的三行加入到hadoop-env.sh中,刪除原來的 "export JAVA_HOME"那行
# begin of pasteexport JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"### end of paste
(2)修改 core-site.xml
vim core-site.xml
將下面的內容複寫到 <configuration> 標籤內
<property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value></property>
(3)修改 yarn-site.xml
vim yarn-site.xml
將下面的內容複寫到 <configuration> 標籤內
<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>
(4)修改 mapred-site.xml
mv mapred-site.xml.template mapred-site.xmlvim mapred-site.xml
將下面的內容複寫到 <configuration> 標籤內
<property> <name>mapreduce.framework.name</name> <value>yarn</value></property>
(5)修改 hdfs-site.xml
mkdir -p ~/mydata/hdfs/namenodemkdir -p ~/mydata/hdfs/datanodevim hdfs-site.xml
將下面的內容複寫到 <configuration> 標籤內
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hduser/mydata/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hduser/mydata/hdfs/datanode</value> </property>
8.安裝 protobuf-2.5.0 or later
curl -# -O https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gztar -xzvf protobuf-2.5.0.tar.gzcd protobuf-2.5.0./configure --prefix=/usrmakesudo make installcd .. mvn package -Pdist,native -DskipTests -Dtar
三.啟動
1.格式化 namenode
hdfs namenode -format
2.啟動服務
start-dfs.sh && start-yarn.sh
3.使用jps查看服務
jps
4.在瀏覽器上查看
Cluster status: http://localhost:8088
HDFS status: http://localhost:50070
Secondary NameNode status: http://localhost:50090
參考文檔:http://blog.csdn.net/feixia586/article/details/24950111
在 Ubuntu 上搭建 Eadoop 分布式叢集 Eclipse 開發環境