Hadoop單機、僞分佈式集羣搭建(十分詳細)

要搭建Hadoop HA集羣請戳這

今天終於把老師佈置的項目做完了,閒來無事在機房的電腦上裝了Ubuntu(用EasyBCD步驟非常簡單,請自行百度),上學期在虛擬機上裝了Hadoop,現在可以在實體機搭個僞分佈式了。


下面我就一邊搭建一邊寫怎麼搭建Hadoop僞分佈模式。


1.下載jdk並安裝

去官網下就可以了,下完之後把文件移到/opt/Java下

guo@guo:~/下載$ mv ./hadoop-2.7.2-src.tar.gz /opt/Hadoop/
mv: 無法創建普通文件"/opt/Hadoop/hadoop-2.7.2.tar.gz": 權限不夠
guo@guo:~/下載$ su root #你用sudo也可以,我是直接換到root用戶了,寫順手了
密碼: 
root@guo:/home/guo/下載# mv ./hadoop-2.7.2.tar.gz /opt/Hadoop/
root@guo:/home/guo/下載# mv ./jdk-8u73-linux-x64.tar.gz /opt/Java/
解壓
root@guo:/opt# cd Java/
root@guo:/opt/Java# ll
總用量 177072
drwxr-xr-x 2 root root      4096  3月 14 15:54 ./
drwxr-xr-x 4 root root      4096  3月 14 15:51 ../
-rw-rw-r-- 1 guo  guo  181310701  3月 14 15:47 jdk-8u73-linux-x64.tar.gz
root@guo:/opt/Java# tar -zxvf jdk-8u73-linux-x64.tar.gz 

修改文件所有者(用戶:用戶組)

root@guo:/home/guo# chown -R guo:guo /opt/Java/jdk1.8.0_73/
root@guo:/home/guo# cd /opt/Java/
root@guo:/opt/Java# ll
總用量 177076
drwxr-xr-x 3 root root      4096  3月 14 15:59 ./
drwxr-xr-x 4 root root      4096  3月 14 15:51 ../
drwxr-xr-x 8 guo  guo       4096  1月 30 09:53 jdk1.8.0_73/
-rw-rw-r-- 1 guo  guo  181310701  3月 14 15:47 jdk-8u73-linux-x64.tar.gz

設置java環境變量

sudo gedit /etc/profile
在文件最後加上
#java
export JAVA_HOME=/opt/Java/jdk1.8.0_73
export JRE_HOME=/opt/Java/jdk1.8.0_73/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
之後更新配置文件
source /etc/profile
然後查看java是否配置成功
guo@guo:~$ java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
恭喜你第一步已經完成了!

2.配置SSH無密碼登錄(報錯看這:ssh: connect to host localhost port 22: Connection refused

注:ssh 用戶名@主機名 ,如果直接ssh 主機名,它會以你那臺機器的當前用戶登錄,所以另一臺機器要有同樣的用戶。

多臺實體機進行通信(發送或者讀取數據,namenode和datanode之間)就是藉助ssh,在通信過程中如果需要操作人員頻繁輸入密碼是不切實際的,所以需要ssh的無密碼登錄

安裝openssh-server

guo@guo:~$ su root
密碼: 
root@guo:/home/guo# apt-get install openssh-server
創建ssh-key(用rsa這種加密算法)
root@guo:/home/guo# ssh-keygen -t rsa
多次回車即可,然後進入~/.ssh目錄(“.”表示這是一個隱藏文件)
root@guo:/home/guo# cd ~/.ssh
root@guo:~/.ssh# ll
總用量 16
drwx------ 2 root root 4096  3月 14 16:20 ./
drwx------ 4 root root 4096  3月 14 16:20 ../
-rw------- 1 root root 1679  3月 14 16:20 id_rsa
-rw-r--r-- 1 root root  390  3月 14 16:20 id_rsa.pub
複製一份,改名爲公鑰
root@guo:~/.ssh# cp id_rsa.pub authorized_keys
root@guo:~/.ssh# ll
總用量 20
drwx------ 2 root root 4096  3月 14 16:22 ./
drwx------ 4 root root 4096  3月 14 16:20 ../
-rw-r--r-- 1 root root  390  3月 14 16:22 authorized_keys
-rw------- 1 root root 1679  3月 14 16:20 id_rsa
-rw-r--r-- 1 root root  390  3月 14 16:20 id_rsa.pub

修改公鑰權限(一定要改)

guo@guo:~/.ssh$ chmod 600 authorized_keys #4+2 0 0
guo@guo:~/.ssh$ ll
總用量 56
drwx------  2 guo guo 4096  3月 15 18:41 ./
drwx------ 20 guo guo 4096  3月 15 17:56 ../
-rw-------  1 guo guo  389  3月 15 18:41 authorized_keys
-rw-------  1 guo guo 1679  3月 15 18:41 id_rsa
-rw-r--r--  1 guo guo  389  3月 15 18:41 id_rsa.pub
-rw-r--r--  1 guo guo  444  3月 15 18:37 known_hosts

然後測試是否成功

guo@guo:~/.ssh$ ssh guo
Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-16-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

0 packages can be updated.
0 updates are security updates.

Last login: Tue Mar 15 18:39:56 2016 from 127.0.0.1
guo@guo:~$ exit
註銷
Connection to guo closed.
guo@guo:~/.ssh$ 

3.Hadoop單機模式配置

去官網下最新的Hadoop(http://apache.opencas.org/hadoop/common/stable/),目前最新的是2.7.2,下載完之後把它放到/opt/Hadoop下

guo@guo:~/下載$ mv ./hadoop-2.7.2.tar.gz /opt/Hadoop/
mv: 無法創建普通文件"/opt/Hadoop/hadoop-2.7.2.tar.gz": 權限不夠
guo@guo:~/下載$ su root 
密碼: 
root@guo:/home/guo/下載# mv ./hadoop-2.7.2.tar.gz /opt/Hadoop/
解壓
guo@guo:/opt/Hadoop$ sudo tar -zxf hadoop-2.7.2.tar.gz 
[sudo] guo 的密碼:
解壓jdk的時候我用的是tar -zxvf,其中的v呢就是看一下解壓的過程,不想看你可以不寫。

修改文件所有者(用戶:用戶組)

root@guo:/opt/Hadoop# chown -R guo:guo /opt/Hadoop/hadoop-2.7.2
root@guo:/opt/Hadoop# ll
總用量 224960
drwxr-xr-x  4 root root      4096  3月 14 18:14 ./
drwxr-xr-x  4 root root      4096  3月 14 15:51 ../
drwxr-xr-x 11 guo  guo       4096  3月 14 21:16 hadoop-2.7.2/

設置環境變量

guo@guo:/opt/Hadoop$ sudo gedit /etc/profile
在最後加上(這樣設置在執行bin/sbin目錄下的命令時就不用進入該目錄用了)
#hadoop
export HADOOP_HOME=/opt/Hadoop/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
然後更新配置
guo@guo:/opt/Hadoop$ source /etc/profile

修改/opt/Hadoop/hadoop-2.7.2/etc/hadoop下的hadoop-env.sh

guo@guo:/opt/Hadoop$ cd hadoop-2.7.2
guo@guo:/opt/Hadoop/hadoop-2.7.2$ cd etc/hadoop/
guo@guo:/opt/Hadoop/hadoop-2.7.2/etc/hadoop$ sudo gedit ./hadoop-env.sh
進入文件後
export JAVA_HOME=${JAVA_HOME}#將這個改成JDK路徑,如下
export JAVA_HOME=/opt/Java/jdk1.8.0_73
然後更新文件配置
guo@guo:/opt/Hadoop/hadoop-2.7.2/etc/hadoop$ source ./hadoop-env.sh
恭喜你單機模式已經配置好了!這時你就可以運行一下wordcount試試了。


4.Hadoop僞分佈模式配置

修改core-site.xml

guo@guo:/opt/Hadoop/hadoop-2.7.2/etc/hadoop$ sudo gedit ./core-site.xml 
[sudo] guo 的密碼: 

進入文件後加入以下內容

<configuration>
   <property>
	<name>fs.default.name</name>
	<value>hdfs://localhost:9000</value>
   </property>
   <property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/Hadoop/hadoop-2.7.2/tmp</value>
   </property>

</configuration>
修改hdfs-site.xml
<configuration>
    <property><!--設置副本數1,不寫默認是3份-->
	<name>dfs.replication</name>
	<value>1</value>
    </property>
</configuration>

拷貝mapred-site.xml.template一份,修改爲mapred-site.xml

sudo cp mapred-site.xml.template mapred-site.xml

並在裏面加入

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

修改yarn-site.xml

<configuration>
<property>
<name>yarn.nodemanager.aux-services </name>
<value>mapreduce_shuffle</value>
</property>
</configuration>



格式化hdfs
guo@guo:/opt/Hadoop/hadoop-2.7.2# hdfs namenode -format

啓動hdfs

guo@guo:/opt/Hadoop/hadoop-2.7.2# start-dfs.sh

啓動yarn

guo@guo:/opt/Hadoop/hadoop-2.7.2# start-yarn.sh

查看是否成功啓動

guo@guo:/opt/Hadoop/hadoop-2.7.2# jps
10144 NodeManager
9668 SecondaryNameNode
9833 ResourceManager
9469 DataNode
10285 Jps
9311 NameNode
如果出現NodeManager DataNode Jps SecondaryNameNode ResourceManage NameNode則表示啓動成功(缺一不可)

如果出現下面的情況

guo@guo:/opt/Hadoop/hadoop-2.7.2$ jps
程序 'jps' 已包含在下列軟件包中:
 * openjdk-7-jdk (您必須啓用main 組件)
 * openjdk-6-jdk (您必須啓用universe 組件)
 * openjdk-8-jdk (您必須啓用universe 組件)
請嘗試:sudo apt-get install <選定的軟件包>

則執行

root@guo:/etc# update-alternatives --install /usr/bin/jps jps /opt/Java/jdk1.8.0_73/bin/jps 1
update-alternatives: 使用 /opt/Java/jdk1.8.0_73/bin/jps 來在自動模式中提供 /usr/bin/jps (jps)



查看resourcemanager:http://localhost:8088

查看namenode:http://localhost:50070

恭喜你僞分佈模式已經配置好了!



下一篇博客我會專門寫一下如何運行wordcount


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章