你好,游客 登录 注册 搜索
背景:
阅读新闻

Hadoop实战之分布式模式

[日期:2015-01-04] 来源:CSDN博客  作者:kongxx [字体: ]

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

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

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. mkdir -p $HADOOP_HOME/dfs/name 
  2. mkdir -p $HADOOP_HOME/dfs/data 
  3. mkdir -p $HADOOP_HOME/temp 


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

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. export JAVA_HOME=/opt/jdk7 


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

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. export JAVA_HOME=/opt/jdk7 


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

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. fanbinx2 
  2. fanbinx3 


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

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

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. $ bin/hdfs namenode -format 


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

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. $ bin/hdfs dfsadmin -report 

 

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

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

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  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 plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. $ bin/hdfs dfs -get output output 
  2. $ cat output/* 
  3. 原文链接:http://blog.csdn.net/kongxx/article/details/42318089




收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款