搭建Hadoop开发环境

来源:互联网 发布:淘宝联盟网页版怎么用 编辑:程序博客网 时间:2024/05/20 00:13

1. 安装
这里假定我们运行Hadoop集群的三台机器名分别为fanbinx1,fanbinx2,fanbinx3。其中fanbinx1作为master节点,fanbinx2和fanbinx3作为slave节点。

另外我们hadoop的2.5.1的安装包安装到各个机器的/opt/hadoop目录下,为了说明方便我们这里使用$HADOOP_HOME来代替/opt/hadoop目录
并在此目录下创建下面三个目录

[plain] view plain copy
 print?
  1. mkdir -p $HADOOP_HOME/dfs/name  
  2. mkdir -p $HADOOP_HOME/dfs/data  
  3. mkdir -p $HADOOP_HOME/temp  

2. 配置
这里一共需要修改hadoop的下面几个配置文件和脚本文件

[plain] view plain copy
 print?
  1. $HADOOP_HOME/etc/hadoop/hadoop-env.sh  
  2. $HADOOP_HOME/etc/hadoop/yarn-env.sh  
  3. $HADOOP_HOME/etc/hadoop/core-site.xml  
  4. $HADOOP_HOME/etc/hadoop/hdfs-site.xml  
  5. $HADOOP_HOME/etc/hadoop/mapred-site.xml  
  6. $HADOOP_HOME/etc/hadoop/yarn-site.xml  
  7. $HADOOP_HOME/etc/hadoop/slaves  

2.1 $HADOOP_HOME/etc/hadoop/hadoop-env.sh指定JAVA_HOME环境变量

[plain] view plain copy
 print?
  1. export JAVA_HOME=/opt/jdk7  

2.2 $HADOOP_HOME/etc/hadoop/yarn-env.sh指定JAVA_HOME环境变量

[plain] view plain copy
 print?
  1. export JAVA_HOME=/opt/jdk7  

2.3 $HADOOP_HOME/etc/hadoop/core-site.xml

[html] view plain copy
 print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3. <configuration>  
  4.     <property>  
  5.         <name>fs.defaultFS</name>  
  6.         <value>hdfs://fanbinx1:9000</value>  
  7.     </property>  
  8.     <property>  
  9.         <name>hadoop.tmp.dir</name>  
  10.         <value>/opt/hadoop/temp</value>  
  11.     </property>  
  12. </configuration>  

2.4 $HADOOP_HOME/etc/hadoop/hdfs-site.xml

[html] view plain copy
 print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3. <configuration>  
  4.     <property>  
  5.         <name>dfs.replication</name>  
  6.         <value>3</value>  
  7.     </property>  
  8.     <property>  
  9.         <name>dfs.namenode.name.dir</name>  
  10.         <value>/opt/hadoop/dfs/name</value>  
  11.     </property>  
  12.     <property>  
  13.         <name>dfs.datanode.data.dir</name>  
  14.         <value>/opt/hadoop/dfs/data</value>  
  15.     </property>  
  16. </configuration>  

2.5 $HADOOP_HOME/etc/hadoop/mapred-site.xml

[html] view plain copy
 print?
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3. <configuration>  
  4.     <property>  
  5.         <name>mapreduce.framework.name</name>  
  6.         <value>yarn</value>  
  7.     </property>  
  8. </configuration>  

2.6 $HADOOP_HOME/etc/hadoop/yarn-site.xml

[html] view plain copy
 print?
  1. <?xml version="1.0"?>  
  2. <configuration>  
  3.     <property>  
  4.         <name>yarn.nodemanager.aux-services</name>  
  5.         <value>mapreduce_shuffle</value>  
  6.     </property>  
  7.     <property>  
  8.         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
  9.         <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
  10.     </property>  
  11.     <property>  
  12.         <name>yarn.resourcemanager.address</name>  
  13.         <value>fanbinx1:8032</value>  
  14.     </property>  
  15.     <property>  
  16.         <name>yarn.resourcemanager.scheduler.address</name>  
  17.         <value>fanbinx1:8030</value>  
  18.     </property>  
  19.     <property>  
  20.         <name>yarn.resourcemanager.resource-tracker.address</name>  
  21.         <value>fanbinx1:8031</value>  
  22.     </property>  
  23.     <property>  
  24.         <name>yarn.resourcemanager.admin.address</name>  
  25.         <value>fanbinx1:8033</value>  
  26.     </property>  
  27.     <property>  
  28.         <name>yarn.resourcemanager.webapp.address</name>  
  29.         <value>fanbinx1:8088</value>  
  30.     </property>  
  31. </configuration>  

2.7 $HADOOP_HOME/etc/hadoop/slaves这个文件夹用来定义slave节点

[plain] view plain copy
 print?
  1. fanbinx2  
  2. fanbinx3  

2.8 最后需要将这些配置文件复制到另外两个slave节点上。

3. 设置Linux上可以ssh用户可以免密码登录

[plain] view plain copy
 print?
  1. $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  
  2. $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  

4. 启动Hadoop集群
4.1 首先格式化namenode

[plain] view plain copy
 print?
  1. $ bin/hdfs namenode -format  

4.2 启动hdfs
在master机器上运行下面命令

[plain] view plain copy
 print?
  1. $ sbin/start-dfs.sh  

在master机器上运行”ps -ef | grep hadoop”可以查看到NameNode和SecondaryNameNode两个hadoop进程
在slave机器上运行”ps -ef | grep hadoop”可以查看到DataNode一个hadoop进程

4.3 启动yarn
在master机器上运行下面命令

[plain] view plain copy
 print?
  1. $ sbin/start-yarn.sh  

在master机器上运行”ps -ef | grep hadoop”可以查看到NameNode,SecondaryNameNode和ResourceManager三个hadoop进程
在slave机器上运行”ps -ef | grep hadoop”可以查看到DataNode和NodeManager两个hadoop进程

4.4 验证
在启动了hdfs和yarn之后,可以通过项目两个url来查看状态
查看HDFS:http://fanbin1:50070/
查看RM: http://fanbin1:8088/cluster/

也可以使用下面的命令行来查看集群状态

[plain] view plain copy
 print?
  1. $ bin/hdfs dfsadmin -report  

4.5 这里也可以使他”sbin/start-all.sh”和”sbin/stop-all.sh”来代替启动/停止hdfs和yarn两个服务。

5. 运行示例程序
首先提交作业

[plain] view plain copy
 print?
  1. $ bin/hdfs dfs -mkdir /user  
  2. $ bin/hdfs dfs -mkdir /user/<username>  
  3. $ bin/hdfs dfs -put etc/hadoop input  
  4. $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar grep input output 'dfs[a-z.]+'  

查看结果

[plain] view plain copy
 print?
  1. $ bin/hdfs dfs -get output output  
  2. $ cat output/*