扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
IDEA 中怎么运行MapReduce 程序,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
成都创新互联是一家专业从事网站设计、网站建设的网络公司。作为专业网站建设公司,成都创新互联依托的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、全网整合营销推广及网站设计开发服务!
将 Hadoop 解压本地目录,例如 C:\Hadoop
设置环境变量:
HADOOP_HOME 指向 Hadoop 解压目录
HADOOP_USER_NAME : 用户名,Hadoop 运行的用户名(下一节 远程提交需要,跟 HDFS 集群所用的一样)
PATH:添加指向 HADOOP_HOME\bin 和 HADOOP_HOME\sbin 的值
重要:Windows 系统:Windows 运行 Hadoop 需要 winutils.exe 和 hadoop.dll 这两个文件:
https://github.com/cdarlint/winutils 下载对应 Hadoop 版本的
hadoop.dll 复制到 C:\Windows\System32
winutils.exe 复制到 HADOOP_HOME\bin
示例项目在 src/hadoop
选择 Gradle 或者 Maven 等构建工具,添加如下依赖:version 对应 Hadoop 的版本。
// https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common compile group: 'org.apache.hadoop', name: 'hadoop-common', version: '3.2.1' // https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client compile group: 'org.apache.hadoop', name: 'hadoop-client', version: '3.2.1'
日志输出配置:项目/src/main/resource/log4j.properties
log4j.appender.A1.Encoding=UTF-8 log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
新建:org.xiao.hadoop.chapter01.WordCount.class :
public class WordCount { public static class WordCountMapper extends Mapper
如果是 Windows 系统和 Gradle 项目,需要打开 Idea 设置,将 Gradle 的设置如下,不然日志会乱码
Hadoop 输入文件:input/chapter01/WordCount/word.txt
hello world hello hadoop hello bigdata hello hadoop and bigdata
Hadoop 输出文件夹,output/chapter01/WordCount 运行程序前需要删除。
在 WordCount.class 按 Ctrl + Shift + F10 直接运行程序即可。项目运行配置:
输出示例:src/hadoop/output/chapter01/WordCount/part-r-00000,没有错误。
and 1 bigdata 2 hadoop 2 hello 4 world 1
前提已经完成:Hadoop 安装和配置
2020.05.07 更新:追踪源码发现,这只是使用集群中的文件,并没有提交到集群。见 2.5 真远程提交。
2.1、在上一节的基础上,增加如下配置:
文件: resource/core-site.xml
fs.defaultFS hdfs://master:9000
文件 resource/mapred-site.xml
mapred.remote.os Linux Remote MapReduce framework's OS, can be either Linux or Windows mapreduce.app-submission.cross-platform true
hdfs-site.xml 和 yarn-site.xml 可以直接复制集群上的配置文件。
2.2、安装 BigDataTools 插件
安装 Idea 官方的 BigDataTools插件,配置连接到 HDFS 集群。可以方便的上传、下载、删除文件。
2.3、修改一下代码
Map 输入文件路径可以是绝对路径,也可以是相对路径。
// 读取配置文件,自动读取 resource 的那几个 xml Configuration conf = new Configuration(); // 省略其他 // 设置输入文件的路径,可以直接指定或者通过传入参数 // new Path(arg[0]) 通过 Programmer argument 传入 // Path("input") 等于 hdfs://master:9000/user/{HADOOP_USER_NAME}/input FileInputFormat.addInputPath(job, new Path("input")); // 设置输出文件的存放路径 FileOutputFormat.setOutputPath(job, new Path("output"));
将 input/chapter01/WordCount/word.txt 上传到 hdfs://master:9000/user/{HADOOP_USER_NAME}/input,(上文:解压 Hadoop 和设置环境变量)
2.4、运行项目
如果已经存在 output 文件夹,需要先删除了。
同样,按 Ctrl + Shift + F10 运行项目,结果存储在 hdfs://master:9000/user/{HADOOP_USER_NAME}/output/part-r-00000 中。
2.5、真远程提交方式
首先,使用 Gradle 将代码打包成 jar 文件,修改文件 src/hadoop/build.gradle,添加
dependencies { // 省略依赖 } // 支持中文编码和注释 tasks.withType(JavaCompile) {options.encoding = "UTF-8"}
使用 Gradle 打包成 jar ,点击右边 框起来的 jar 命令,左边是生产的 jar 文件。
将 jar 提交到远程,以下两种方式:
方式一:文件 src/hadoop/src/main/java/org/xiao/hadoop/chapter01/WordCount.java 读取配置文件的地方
// 读取配置文件 Configuration conf = new Configuration(); conf.set("mapreduce.job.jar","D:/Project/BigDateNotes/src/hadoop/build/libs/hadoop-1.0.0.jar");
或者 mapred-site.xml 文件添加,注意不管方式一还是方式二,都必须指定 :mapreduce.framework.name 为 yarn。
mapreduce.framework.name yarn mapreduce.job.jar D:/Project/BigDateNotes/src/hadoop/build/libs/hadoop-1.0.0.jar
提交运行就行了
小结:
Window 下运行 Hadoop 需要 winutils.exe 和 hadoop.dll
推荐使用构建工具如 Maven、Gradle 管理 Hadoop 依赖
Windows 下 需要设置 Gradle 的 build and run using、tests run using 为 IDEA(因为中文注释和终端输出乱码问题)
Idea 远程提交需要设置 mapred.remote.os,mapreduce.app-submission.cross-platform,mapreduce.job.jar 这三个配置。
关于IDEA 中怎么运行MapReduce 程序问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流