基于hadoop源码开发环境搭建
在开发hadoop的MR,以及研究hadoop源码,都需要将hadoop源码java部署到开发工具中,
例如常用的eclipse,具体做法如下:
第一步:在Eclipse新建一个Java项目
第二步:将Hadoop程序src下core, hdfs, mapred, tools几个目录copy到上述新建项目的src目录
第三步:修改将Java Build Path,删除src,添加src/core, src/hdfs....几个源码目录
第四步:为Java Build Path添加项目依赖jar,可以导入Hadoop程序的lib下所有jar包(别漏掉其子目录jar包),导入ant程序lib下所有jar包。
第五步:理论上第四步就OK了,但是可能会报大量如下错误:
Access restriction: The method arrayBaseOffset(Class) from the type Unsafe is not accessible due to restriction on required library C:\Program Files\JDK\jre\lib\rt.jar xxx.java xxxx line 141 Java Problem
解决办法是:右键项目“propertiyes” > "Java Build Path" > "Libraries",展开"JRE System Library",双击"Access rules",点击"Add"按钮,在"Resolution"下拉框选择"Accessible","Rule Pattern"填写"**/*",保存后就OK了。
测试wordcount实例:
reduce:
package test; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; public class MyReduce extends Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } context.write(key, new IntWritable(sum)); } }
map:
package test; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class MyMap extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word; public void map(Object key, Text value, Context context)throws IOException, InterruptedException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word = new Text(); word.set(tokenizer.nextToken()); context.write(word, one); } } }
driver:
package test; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; public class MyDriver { public static void main(String[] args) throws Exception, InterruptedException { Configuration conf = new Configuration(); conf.set("dfs.permissions", "flase"); Job job = new Job(conf, "Hello Hadoop"); job.setJarByClass(MyDriver.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.setMapperClass(MyMap.class); job.setCombinerClass(MyReduce.class); job.setReducerClass(MyReduce.class); job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); // JobClient.runJob(conf); job.waitForCompletion(true); } }
配置响应的运行参数,运行即可。
相关推荐
### 基于Eclipse 的 Hadoop 应用开发环境配置详解 #### 一、引言 随着大数据技术的发展,Hadoop 成为了处理大规模数据集的重要工具之一。而在实际开发过程中,选择合适的集成开发环境(IDE)对于提高开发效率至关...
毕业设计-基于Hadoop平台开发的视频收视率分析源码+项目说明.zip 本项目分为四个模块,分别为爬虫模块、离线数据分析模块、公共基础模块、web展示模块。首先用WebMagic爬取的B站视频数据作为数据源,构建以离线...
在实际应用中,可以使用Hadoop的Java API编写MapReduce程序,或者使用基于Hadoop的高级框架,如Apache Pig、Hive或Spark,它们提供了更高级别的抽象,简化了大数据处理。 总结来说,搭建Hadoop集群涉及Java环境配置...
### 基于Hadoop的云计算试验平台搭建研究 #### 一、引言 随着大数据时代的到来,数据处理的需求日益增长,传统的数据处理方法已经难以满足当前的数据处理需求。因此,构建一个高效、稳定的云计算试验平台显得尤为...
总结来说,搭建Ubuntu 14.04.1上的Hadoop 2.4完全分布式系统需要安装Java环境,下载并解压Hadoop源码,配置相关XML文件,启动Hadoop服务,并确保所有节点间通信正常。对于初学者,这是一个深入了解Hadoop分布式计算...
在所有节点上安装Java运行环境(JRE)是必要的,因为Hadoop是基于Java开发的。确保所有服务器上的JRE版本一致,并且安装路径相同,以避免环境变量问题。 配置Hadoop环境涉及以下几个关键步骤: 1. 设置环境变量:...
2. 安装配置Hadoop:下载Hadoop源码或二进制包,然后根据集群规模进行配置,包括设置HDFS的副本数量、内存分配等参数。 3. 初始化HDFS:格式化NameNode,初始化HDFS文件系统。 4. 启动Hadoop服务:启动NameNode、...
本资源是一个基于Hadoop MapReduce框架实现的酒店评价文本情感分析项目,旨在通过Python编程和大数据处理技术,对大量酒店评论数据进行情感倾向性分析。项目包括完整的Python源码和详细的项目说明文档,适合有一定...
总结来说,基于Windows、Eclipse、Maven和Hadoop实现WordCount源码的过程主要包括以下步骤:配置开发环境、创建Maven项目、编写MapReduce代码、打包成jar文件,以及在Hadoop集群上运行作业。通过这个过程,我们可以...
总之,搭建Hadoop虚拟机集群环境是一项涉及多方面知识的工作,包括虚拟化技术、Linux操作、网络配置以及Java环境。理解Hadoop的基本原理和配置细节是成功部署的关键。在实际操作中,要保持耐心,逐步解决问题,最终...
《Hadoop源码分析完整版》是对Hadoop源码的深度解析,适合对Hadoop底层机制感兴趣的开发者。通过阅读这本书,你可以深入理解Hadoop的工作原理,包括HDFS的数据块管理、MapReduce的作业调度等,从而更好地进行二次...
3. **自编译Hadoop源码**:为了在Windows 11上运行Hadoop,我们需要从源码编译Hadoop,这涉及到Java开发环境(JDK)的安装,Apache Maven的配置,以及对Hadoop源码进行修改以适应Windows环境。这通常包括修改配置...
基于Hadoop和MapReduce实现的朴素贝叶斯分类器源码+项目说明.zip 环境搭建 搭建 `Hadoop` 环境,本项目在Mac系统上搭建的 `hadoop-2.8.5`环境下完成。 数据集说明 数据集在项目文件`\Data\NBCorpus\`中 包含二个子...
【软件工程课程设计报告Hadoop配置】主要涵盖了在软件工程课程中使用Hadoop进行课程设计的相关内容,包括环境搭建、Eclipse中的应用测试、遇到的问题与解决方案以及对Hadoop源码的分析。以下是对这些知识点的详细...
这是一个基于Hadoop和Spark的大数据分析项目,用于分析奥运会奖牌变化情况,适用于毕业设计学习。项目的核心在于利用大数据处理框架处理海量数据,提取有价值的信息,为体育赛事的研究提供支持。 首先,Hadoop是...
标题 "基于hadoop+hbase+springboot实现分布式网盘系统.zip" 描述了一个融合了多种技术的分布式存储解决方案,主要用于毕业设计项目。这个系统利用了Hadoop的分布式处理能力,HBase的分布式数据库特性,以及...
最后,HBase 0.94是基于Hadoop的分布式列式存储系统,适合实时读写操作。其安装步骤包括: 1. **配置环境**:与Hadoop类似,需要配置Java环境和HBase所需的Hadoop配置。 2. **下载和解压HBase**:从官方获取HBase ...
**Hive**是基于Hadoop的数据仓库工具,用于处理结构化数据。在Hadoop集群上搭建Hive环境涉及以下步骤: 1. **安装Hive**:下载并解压Hive的二进制包,配置`hive-site.xml`,指定Hadoop的相关路径。 2. **创建...
* 具体的Hadoop集群搭建,集成开发环境(IDE)的构建,如果以后能够用到,我会将详细过程放在我的个人博客上(见“关于作者”部分)。 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的...