设为首页 收藏本站
查看: 510|回复: 0

[经验分享] Hadoop学习之路--运行MapReduce作业做集成测试(转)

[复制链接]

尚未签到

发表于 2016-12-10 11:27:27 | 显示全部楼层 |阅读模式



  网上找到的一篇文章,基本上windows上按照这个流程就能配置好hadoop的环境,并且能够测试

运行MapReduce作业做集成测试
  




准备工作


以windows环境为例:

安装jdk,设置环境变量JAVA_HOME为jdk安装目录

安装Cygwin,安装时注意选择安装软件包openssh – Net 类,安装完成将cygwin/bin加入环境变量path。

确认ssh。打开cygwin命令行,分别执行以下命令

安装sshd:$ ssh-host-config

启动sshd服务:$ net start sshd

检查可登录localhost:$ ssh localhost

下载稳定的hadoop版本,点此选择下载
,我选择的是0.20.2版本。

下载后解压,编辑conf/hadoop-env.sh,修改JAVA_HOME为jdk安装目录。



至此,Windows环境下的Hadoop的安装和配置完成,为了运行还需要打包MapReduce作业。我们用maven的 assembly插件来将程序打包。

配置如下:


<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>


 
在pom.xml里加入以上配置,运行mvn assembly:assembly命令就可以打包了。
单机运行


特点:
单台机器、单线程运行、不需要启动hadoop进程,利于调试,但没有模拟hadoop集群多个进程的情况,只支持一个reducer。

运行方式:
$ bin/hadoop jar --config standalone path/xx.jar WordCount input output


注意点:
用–config指定单机运行时的配置目录(示例中配置目录文件夹名为standalone,在0.20.2版本这个文件夹可以为空目录,不要别的配置文件)

WordCount为包含运行作业main函数的的类,如果有包名需要加上包名。

Input文件夹下放置输入的文件。

output为输出的目录,在运行job前需保证该目录不存在,否则会报错。

伪分布式运行


特点:
单台机器,启动hadoop所有进程(如NameNode, DataNode, TaskTracker, JobTracker, SecondaryNameNode),较好的模拟hadoop集群情况。

配置:
conf/core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

 
conf/hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

 
mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

 

运行:
格式化分布式文件系统:$ bin/hadoop namenode –format

启动hadoop进程:$ bin/start-all.sh

检查是否启动成功,可访问以下url

NameNode – http://localhost:50070/

JobTracker – http://localhost:50030/

如果不能访问,检查logs目录下的日志分析原因。

将输入文件复制到分布式文件系统:$ bin/hadoop fs -put local input

运行作业:$ bin/hadoop jar path/xx.jar WordCount input output

检查输出:$ bin/hadoop fs -cat output/*

停止hadoop进程:$ bin/stop-all.sh

完全分布式运行测试


完全分布式运行需要利用多台机器,实现hadoop的分布式集群,通过高仿真环境进行集成测试。关于完全分布式运行测试环境搭建可见Cluster Setup

集成测试总结


在掌握了如何运行hadoop作业后,测试要做的事就是通过脚本/代码将这个过程自动化起来,一般流程是:

预设置(准备输入文件、启动hadoop进程等)->运行作业->输出结果跟预期结果的对比->报告导致失败的原因。

在运行集成测试时需要考虑几个问题:

集成环境的搭建:需要考虑机器资源,维护成本。

输入构造:在单元测试时我们可以很容易的构造一些小的键值对,其输出结果可以很好的预期,但在集成测试时小文件意义已经不大了,我们需要仿真的大批量的数据来发现程序的问题,仿真度越高,发现问题的可能性越大。


输出分析:
我们面对的输入是仿真的海量数据,不可能做输出结果的精确预期,需要借助日志或对输出进行二次分析。在开发时需要考虑这些情况,将有用信息通过日志或输出
的方式存储。在完全分布式模式运行,日志散落在各台机器上,如何有效获取这些日志集中起来做分析?这个我们可以借助Scribe
工具。同样,输出结果也可能为海量数据,如何高效对此进行分析,这可能需要针对输出数据编写测试的MapReduce任务来分析结果。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-312354-1-1.html 上篇帖子: Hadoop中 "Exceeded MAX_FAILED_UNIQUE_FETCHES”的错误 下篇帖子: 用eclipse编译hadoop例子要做的修改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表