伪分布模式. Hadoop守护进程运行在本地机器上,模拟一个小规模的的集群。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。
伪分布模式安装前提:单机模式已经安装好,详情请见:单机模式安装
接下来只需要配置即可
1 配置core-site.xml hdfs-site.xml mapred-site.xml
core-site.xml: Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等。
hdfs-site.xml: Hadoop 守护进程的配置项,包括namenode,辅助namenode和datanode等。
mapred-site.xml: MapReduce 守护进程的配置项,包括jobtracker和tasktracker。(注意:hadoop2.7.0中没有这个文件,只需要将mapred-site.xml.template这个文件copy一份命名为 mapred-site.xml即可)。
1)core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
</property>
</configuration>
2)
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/hadoop/datalog1,/usr/hadoop/datalog2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/hadoop/data1,/usr/hadoop/data2</value>
</property>
</configuration>
3 )
mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
2:启动Hadoop到相关服务,格式化namenode, secondarynamenode, tasktracker:
hadoop@Rev:/usr/hadoop/hadoop2.7.0$ hadoop namenode -format
如果看到下面信息就表明成功!
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at derekUbun/127.0.1.1
************************************************************/
此时会在/usr/hadoop/下生成几个文件夹:
3:启动hadoop
1)接着执行start-all.sh来启动所有服务,包括namenode,datanode,start-all.sh脚本用来装载守护进程。会遇到一个警告
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...using builtin-java classses where applicable 这个可以不用管,如果你觉得很难受,那就查资料吧。
2)用Java的jps命令列出所有守护进程来验证安装成功
hadoop@Rev:/usr/hadoop$ jps
如果出现类似下面这种就是启动成功了
4384 SecondaryNameNode
4676 NodeManger
4008 NameNode
5003 Jps
4541 ResourceManger
4141 DataNode
3)检查运行状态
http://localhost:8088/ (Hadoop中用于监控集群健康状态的Web界面)
至此,hadoop的伪分布模式已经安装成功。接下来我们在eclipse运行第一个MapReduce项目
1:在Ubuntu下安装eclipse 这一步就省略了。去官网上下载合适的安装包即可
2:在eclipse 下安装MapReduce插件
这一步网上有两种方法 一种是自己编译,一种是下载现成的,我选择是后者。
直接去https://github.com/winghc/hadoop2x-eclipse-plugin 下载压缩文件,release文件夹下有 ,我就分享下吧:eclipse—MapReduce插件下载 ,然后进行eclipse插件安装,这里安装方法很多不在详细表述,重启eclipse 会看到在window菜单Preference下搜寻MapReduce 即可出现 ,我们输入hadoop根目录
同时添加Locations
进入进行配置 M/P master 端口号对应mapred-site.xml DFS Master 端口号对应core-site.xml 完成后点击finish
打开DFS Location 此时刷新 会有相应的Location Name 命名的 DFS 地址 如果报错显示连接失败,建议重新Format 和重启hadoop
3:运行WordCount 例子
1)新建一个MapReduce项目New->Project->Map/Reduce Project 然后将Hadoop自带的WordCount.java 放入项目src中,去掉最上面的package
2) 在usr/hadoop下新建一个input文件夹,里面新建两个文件
textWordCount1内容是: Hello World Bye World
textWordCount2内容是: Hello Hadoop Goodbye Hadoop
然后上传目录到DFS (换做命令行就是如下命令)
hadoop@Rev:/usr/hadoop$ hadoop dfs -copyFromLocal input
成功后会在dfs下显示input文件夹。
3)运行wordcount,在Run之前进行如下设置Arguments,注意按照dfs地址格式来!
运行的时候会报没有Log4j的警告,但实际已经运行生成,为了能在控制台看到数据运行,我们新建一个log4j.properties 放在项目的src下,里面写如下
# Configure logging for testing: optionally with log file
#\u53EF\u4EE5\u8BBE\u7F6E\u7EA7\u522B\uFF1Adebug>info>error
#debug:\u53EF\u4EE5\u663E\u5F0Fdebug,info,error
#info:\u53EF\u4EE5\u663E\u5F0Finfo,error
#error:\u53EF\u4EE5\u663E\u5F0Ferror
log4j.rootLogger=debug,appender1
#log4j.rootLogger=info,appender1
#log4j.rootLogger=error,appender1
#\u8F93\u51FA\u5230\u63A7\u5236\u53F0
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#\u6837\u5F0F\u4E3ATTCCLayout
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
这就可以在控制台看到相关信息,然后运行wordcount,结果会生成output目录,里面就会有成功的文件part-r-00000,里面会显示统计的单词和词频
至此就大功告成,欢迎各位优快云网友指正不足之处!