Hadoop单机、伪分布式集群搭建(十分详细)


原文地址:http://blog.csdn.net/dr_guo/article/details/50886667


下面我就一边搭建一边写怎么搭建Hadoop伪分布模式。


1.下载jdk并安装

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

[plain]  view plain  copy
 
  1. guo@guo:~/下载$ mv ./hadoop-2.7.2-src.tar.gz /opt/Hadoop/  
  2. mv: 无法创建普通文件"/opt/Hadoop/hadoop-2.7.2.tar.gz": 权限不够  
  3. guo@guo:~/下载$ su root #你用sudo也可以,我是直接换到root用户了,写顺手了  
  4. 密码:   
  5. root@guo:/home/guo/下载# mv ./hadoop-2.7.2.tar.gz /opt/Hadoop/  
  6. root@guo:/home/guo/下载# mv ./jdk-8u73-linux-x64.tar.gz /opt/Java/  
解压
[plain]  view plain  copy
 
  1. root@guo:/opt# cd Java/  
  2. root@guo:/opt/Java# ll  
  3. 总用量 177072  
  4. drwxr-xr-x 2 root root      4096  3月 14 15:54 ./  
  5. drwxr-xr-x 4 root root      4096  3月 14 15:51 ../  
  6. -rw-rw-r-- 1 guo  guo  181310701  3月 14 15:47 jdk-8u73-linux-x64.tar.gz  
  7. root@guo:/opt/Java# tar -zxvf jdk-8u73-linux-x64.tar.gz   

修改文件所有者(用户:用户组)

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

设置java环境变量

[plain]  view plain  copy
 
  1. sudo gedit /etc/profile  
在文件最后加上
[plain]  view plain  copy
 
  1. #java  
  2. export JAVA_HOME=/opt/Java/jdk1.8.0_73  
  3. export JRE_HOME=/opt/Java/jdk1.8.0_73/jre  
  4. export CLASSPATH=$JAVA_HOME/lib  
  5. export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin  
之后更新配置文件
[plain]  view plain  copy
 
  1. source /etc/profile  
然后查看java是否配置成功
[plain]  view plain  copy
 
  1. guo@guo:~$ java -version  
  2. java version "1.8.0_73"  
  3. Java(TM) SE Runtime Environment (build 1.8.0_73-b02)  
  4. 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 主机名,它会以你那台机器的当前用户登录,所以另一台机器要有同样的用户。

从一台Linux主机登录到另一台Linux主机上(或发送一条指令到另外的机器上执行),如果集群有很多台机器,你挨个输密码肯定不行,所以要配置SSH无密码登录。

安装openssh-server

[plain]  view plain  copy
 
  1. guo@guo:~$ su root  
  2. 密码:   
  3. root@guo:/home/guo# apt-get install openssh-server  
创建ssh-key(用rsa这种加密算法)
[plain]  view plain  copy
 
  1. root@guo:/home/guo# ssh-keygen -t rsa  
多次回车即可,然后进入~/.ssh目录(“.”表示这是一个隐藏文件)
[plain]  view plain  copy
 
  1. root@guo:/home/guo# cd ~/.ssh  
  2. root@guo:~/.ssh# ll  
  3. 总用量 16  
  4. drwx------ 2 root root 4096  3月 14 16:20 ./  
  5. drwx------ 4 root root 4096  3月 14 16:20 ../  
  6. -rw------- 1 root root 1679  3月 14 16:20 id_rsa  
  7. -rw-r--r-- 1 root root  390  3月 14 16:20 id_rsa.pub  
复制一份,改名为公钥
[plain]  view plain  copy
 
  1. root@guo:~/.ssh# cp id_rsa.pub authorized_keys  
  2. root@guo:~/.ssh# ll  
  3. 总用量 20  
  4. drwx------ 2 root root 4096  3月 14 16:22 ./  
  5. drwx------ 4 root root 4096  3月 14 16:20 ../  
  6. -rw-r--r-- 1 root root  390  3月 14 16:22 authorized_keys  
  7. -rw------- 1 root root 1679  3月 14 16:20 id_rsa  
  8. -rw-r--r-- 1 root root  390  3月 14 16:20 id_rsa.pub  

修改公钥权限(一定要改)

[plain]  view plain  copy
 
  1. guo@guo:~/.ssh$ chmod 600 authorized_keys #4+2 0 0  
  2. guo@guo:~/.ssh$ ll  
  3. 总用量 56  
  4. drwx------  2 guo guo 4096  3月 15 18:41 ./  
  5. drwx------ 20 guo guo 4096  3月 15 17:56 ../  
  6. -rw-------  1 guo guo  389  3月 15 18:41 authorized_keys  
  7. -rw-------  1 guo guo 1679  3月 15 18:41 id_rsa  
  8. -rw-r--r--  1 guo guo  389  3月 15 18:41 id_rsa.pub  
  9. -rw-r--r--  1 guo guo  444  3月 15 18:37 known_hosts  

然后测试是否成功

[plain]  view plain  copy
 
  1. guo@guo:~/.ssh$ ssh guo  
  2. Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-16-generic x86_64)  
  3.   
  4.  * Documentation:  https://help.ubuntu.com/  
  5.   
  6. 0 packages can be updated.  
  7. 0 updates are security updates.  
  8.   
  9. Last login: Tue Mar 15 18:39:56 2016 from 127.0.0.1  
  10. guo@guo:~$ exit  
  11. 注销  
  12. Connection to guo closed.  
  13. guo@guo:~/.ssh$   

3.Hadoop单机模式配置

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

[plain]  view plain  copy
 
  1. guo@guo:~/下载$ mv ./hadoop-2.7.2.tar.gz /opt/Hadoop/  
  2. mv: 无法创建普通文件"/opt/Hadoop/hadoop-2.7.2.tar.gz": 权限不够  
  3. guo@guo:~/下载$ su root   
  4. 密码:   
  5. root@guo:/home/guo/下载# mv ./hadoop-2.7.2.tar.gz /opt/Hadoop/  
解压
[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop$ sudo tar -zxf hadoop-2.7.2.tar.gz   
  2. [sudo] guo 的密码:  
解压jdk的时候我用的是tar -zxvf,其中的v呢就是看一下解压的过程,不想看你可以不写。

修改文件所有者(用户:用户组)

[plain]  view plain  copy
 
  1. root@guo:/opt/Hadoop# chown -R guo:guo /opt/Hadoop/hadoop-2.7.2  
  2. root@guo:/opt/Hadoop# ll  
  3. 总用量 224960  
  4. drwxr-xr-x  4 root root      4096  3月 14 18:14 ./  
  5. drwxr-xr-x  4 root root      4096  3月 14 15:51 ../  
  6. drwxr-xr-x 11 guo  guo       4096  3月 14 21:16 hadoop-2.7.2/  

设置环境变量

[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop$ sudo gedit /etc/profile  
在最后加上(这样设置在执行bin/sbin目录下的命令时就不用进入该目录用了)
[plain]  view plain  copy
 
  1. #hadoop  
  2. export HADOOP_HOME=/opt/Hadoop/hadoop-2.7.2  
  3. export PATH=$PATH:$HADOOP_HOME/sbin  
  4. export PATH=$PATH:$HADOOP_HOME/bin  
然后更新配置
[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop$ source /etc/profile  

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

[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop$ cd hadoop-2.7.2  
  2. guo@guo:/opt/Hadoop/hadoop-2.7.2$ cd etc/hadoop/  
  3. guo@guo:/opt/Hadoop/hadoop-2.7.2/etc/hadoop$ sudo gedit ./hadoop-env.sh  
进入文件后
[plain]  view plain  copy
 
  1. export JAVA_HOME=${JAVA_HOME}#将这个改成JDK路径,如下  
  2. export JAVA_HOME=/opt/Java/jdk1.8.0_73  
然后更新文件配置
[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop/hadoop-2.7.2/etc/hadoop$ source ./hadoop-env.sh  
恭喜你单机模式已经配置好了!这时你就可以运行一下wordcount试试了。


4.Hadoop伪分布模式配置

修改core-site.xml

[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop/hadoop-2.7.2/etc/hadoop$ sudo gedit ./core-site.xml   
  2. [sudo] guo 的密码:   

进入文件后加入以下内容

[plain]  view plain  copy
 
  1.   
  2.      
  3.     fs.default.name  
  4.     hdfs://localhost:9000  
  5.      
  6.      
  7.     hadoop.tmp.dir  
  8.     /opt/Hadoop/hadoop-2.7.2/tmp  
  9.      
  10.   
  11.   
修改hdfs-site.xml
[plain]  view plain  copy
 
  1.   
  2.       
  3.     dfs.replication  
  4.     1  
  5.       
  6.   

拷贝mapred-site.xml.template一份,修改为mapred-site.xml

[plain]  view plain  copy
 
  1. sudo cp mapred-site.xml.template mapred-site.xml  

并在里面加入

[plain]  view plain  copy
 
  1.   
  2.   
  3. mapreduce.framework.name  
  4. yarn  
  5.   
  6.   

修改yarn-site.xml

[plain]  view plain  copy
 
  1.   
  2.   
  3. yarn.nodemanager.aux-services   
  4. mapreduce_shuffle  
  5.   
  6.   

 
  
 
  格式化hdfs 
  
[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop/hadoop-2.7.2# hdfs namenode -format  

启动hdfs

[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop/hadoop-2.7.2# start-dfs.sh  

启动yarn

[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop/hadoop-2.7.2# start-yarn.sh  

查看是否成功启动

[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop/hadoop-2.7.2# jps  
  2. 10144 NodeManager  
  3. 9668 SecondaryNameNode  
  4. 9833 ResourceManager  
  5. 9469 DataNode  
  6. 10285 Jps  
  7. 9311 NameNode  
如果出现NodeManager DataNode Jps SecondaryNameNode ResourceManage NameNode则表示启动成功(缺一不可)

如果出现下面的情况

[plain]  view plain  copy
 
  1. guo@guo:/opt/Hadoop/hadoop-2.7.2$ jps  
  2. 程序 'jps' 已包含在下列软件包中:  
  3.  * openjdk-7-jdk (您必须启用main 组件)  
  4.  * openjdk-6-jdk (您必须启用universe 组件)  
  5.  * openjdk-8-jdk (您必须启用universe 组件)  
  6. 请尝试:sudo apt-get install <选定的软件包>  

则执行

[plain]  view plain  copy
 
  1. root@guo:/etc# update-alternatives --install /usr/bin/jps jps /opt/Java/jdk1.8.0_73/bin/jps 1  
  2. update-alternatives: 使用 /opt/Java/jdk1.8.0_73/bin/jps 来在自动模式中提供 /usr/bin/jps (jps)  



查看resourcemanager:http://localhost:8088

查看namenode:http://localhost:50070

恭喜你伪分布模式已经配置好了!



下一篇博客我会专门写一下如何运行wordcount

你可能感兴趣的:(Hadoop)