Mac下搭建hadoop伪分布式及eclipse开发环境_mac使用hadoop处理项目_宇毅的博客-程序员秘密

技术标签: 伪分布式  hadoop  mac  eclipse  

本文分三个部分,首先是mac下搭建hadoop伪分布式集群,然后搭建eclispe下hadoop调试环境,最后配置hadoop源码,便于学习。

Mac下Hadoop伪分布式搭建

1. Hadoop下载

源码包和编译后的包都要下载。这里我用的是hadoop-2.6.4,下载地址如下:
https://archive.apache.org/dist/hadoop/common/hadoop-2.6.4/
这里写图片描述

2. Hadoop参数配置

这部分工作网上有很多文章可以借鉴,在此不做重复叙述:
参考以下网址:http://www.cnblogs.com/aijianiula/p/3842581.html

3. 开启hadoop

进入hadoop根目录下的sbin文件夹,运行如下命令:
sh start-all.sh
打开:http://localhost:50070
这里写图片描述
打开:http://localhost:8088/
这里写图片描述

搭建eclispe下开发环境

1. eclipse下载

本人使用eclipse版本为Mars。下载地址:
http://www.eclipse.org/downloads/packages/release/Mars/2

2. 下载hadoop插件

hadoop-eclipse-plugin-2.6.4.jar 下载地址:
http://download.csdn.net/download/tondayong1981/9437360
把插件放到eclipse/ plugins目录下 。

3. 重启eclipse,配置Hadoop installation directory

如果插件安装成功,打开eclipse – 偏好设置,在窗口左侧会有Hadoop Map/Reduce选项,点击此选项,在窗口右侧设置Hadoop安装路径。
这里写图片描述

4. 配置Map/Reduce Locations

打开Windows—Open Perspective—Other
这里写图片描述
选择Map/Reduce,点击OK。在右下方看到如下图所示:
这里写图片描述
点击Map/Reduce Location选项卡,点击右边小象图标,打开Hadoop Location配置窗口:输入Location Name,任意名称即可.配置Map/Reduce Master和DFS Mastrer,Host和Port配置成与core-site.xml的设置一致即可。
这里写图片描述
点击”Finish”按钮,关闭窗口。点击左侧的DFSLocations—>myhadoop(上一步配置的location name),如能看到user,表示安装成功。
这里写图片描述
此时,已经可以和自己本地的Hadoop集群相连接。并可以从集群下载,或上传文件.

5. 新建WordCount项目

File—>Project,选择Map/Reduce Project,输入项目名称WordCount,点finish完成。
这里写图片描述
新建一个包:hz。再新建一个WordCount.java类。项目结构如下:
这里写图片描述
wordcount代码如下:

import java.io.IOException;  
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.Mapper;  
import org.apache.hadoop.mapreduce.Reducer;  
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;  
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;  
import org.apache.hadoop.util.GenericOptionsParser;  

public class WordCount {

    private static class WordCountMapper extends Mapper<Object, Text, Text, IntWritable>{  
        @Override  
        protected void map(Object key, Text value, Context context)  
                throws IOException, InterruptedException {  
            String str=value.toString();  
            String []strArray=str.split(" ");  
            for(String s:strArray){  
                context.write(new Text(s), new IntWritable(1));  
            }  
        }    
    }  

    private static class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{  
        @Override  
        protected void reduce(Text key, Iterable<IntWritable> values,  
                Context context)  
                throws IOException, InterruptedException { 
            int sum=0; 
            for(IntWritable count:values){  
                sum+=count.get();  
            }  
            context.write(key, new IntWritable(sum));  
        }  
    }  

    public static void main(String[] args) throws Exception{  
        Configuration conf=new Configuration();  
        String []argArray=new GenericOptionsParser(conf,args).getRemainingArgs();  
        if(argArray.length!=2){  
            System.out.println("需要两个参数");  
            System.exit(1);  
        }  
        Job job=Job.getInstance(conf,"wordcount"); 
        job.setJarByClass(WordCount.class); 

        job.setMapperClass(WordCountMapper.class);  
        job.setMapOutputKeyClass(Text.class);  
        job.setMapOutputValueClass(IntWritable.class);  

        job.setReducerClass(WordCountReducer.class);
        job.setOutputKeyClass(Text.class);  
        job.setOutputValueClass(IntWritable.class); 

        FileInputFormat.addInputPath(job, new Path(argArray[0]));  
        FileOutputFormat.setOutputPath(job, new Path(argArray[1]));  

        System.exit(job.waitForCompletion(true)?0:1);  
    }  
}

6. 运行wordCount项目

  1. 在HDFS上创建目录input。
    hadoop fs -mkdir /user/hadoop/input
  2. 拷贝hadoop根目录下的README.txt到HDFS的input文件夹里。
    hdfs dfs -put README.txt /user/hadoop/input
  3. 点击WordCount.java右键,点击Run As ->Run Configurations,输入运行参数:
    hdfs://localhost:9000/user/input hdfs://localhost:9000/user/output
    结果图如下,其中input是输入文件夹,ouput是输出文件夹。
    这里写图片描述

7. 参考

http://www.bubuko.com/infodetail-1510060.html
http://www.51itong.net/eclipse-hadoop2-7-0-12448.html

Hadoop源码查看

如果想深入学习hadoop,阅读源码是非常必要的。之前已经下载了hadoop的源码包,并解压到指定路径下,我的路径为:/Users/haizhi/hadoop-2.6.4-src。接下来,只要在eclipse下的工程中,只要做简要配置即可。
如想查看Text类的源码。只要右键如下图选择:
这里写图片描述
这里写图片描述
这里写图片描述
选择之前源码解压的路径即可。源码如下显示:
这里写图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xsdxs/article/details/53148634

智能推荐

首页增强外挂 vBulltein 3.5.x/3.6.x_weixin_33862041的博客-程序员秘密

●档案 名称: 首页四栏最新主题列表 繁简中文加强版●插件 译名: 首页四栏最新主题列表加强版●插件 版本: 3.0' 繁体/简体中文加强版●档案 类型: 首页增强外挂●适用 版本: vBulltein 3.5.x/3.6.x●档案 编者: Developer●档案 增修: Lilyandy休闲资讯网: Lilyandy●繁简中文化: Lilyandy休闲资讯网...

halcon17安装教程_小鱼教你模数电的博客-程序员秘密

安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。1.鼠标右击【Halcon17】压缩包选择【解压到Halcon17】。2.双击打开解压后的【Halcon17】文件夹。3.双击打开【setup】文件夹。4.鼠标右击【halcon-17.12.0.0-windows.exe】选择【以管理员身份运行】。5.点击【Next】。6.将滚动条拉至最下方,然后勾选【I accept the terms ofthe Softwar...

内存分配和常见错误——高质量C、C++编程指南_小葱CC的博客-程序员秘密

本文内容出自《高质量C、C++编程指南》,这本书对内存管理这些内容说得很好,故整理出来跟大家分享。一、内存分配方式1、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。2、在栈上创建。如函数内局部变量,在函数执行结束时会被自动释放。栈上创建的变量效率很高,但是分配的内存容量有限。3、

相片: 满月_1_chiguangte1545的博客-程序员秘密

转载于:https://my.oschina.net/macfeeupdate/blog/5828

用激光打印机在打印时遇到的两个情况_weixin_33861800的博客-程序员秘密

公司新买一台激光打印机HP M315a,用来打印宣传册。打印的时候, 发现总是会有边距,想了好多办法,都不行。咨询HP售后,得到结果是HP激光打印机都不支持无边距打印,要想实现无边距打印,HP的喷墨打印机有这一功能。打印机已经拆封了,想换是不可能的了,所以在些,提醒各位准备买打印机的朋友,一定要注意这个情况,打印机是分支持无边距和不支持无边距两种功能的。打印出来的效果是,上...

收集几种解决:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or t_Syd丶的博客-程序员秘密

1、web项目出现如上问题,可能是版本问题:JSTL 1.0 的声明是:http://java.sun.com/jstl/core " %>JSTL1.1 的声明是:Java.sun.com/jsp/jstl/core %>目前项目版本为Java EE5,已经是 jstl 1.2 版本了,页面中用http://java.sun.com/jsp/jstl/co

随便推点

时间过得好快!_fgdlxg的博客-程序员秘密

 九月份又到了,时间过得好快!好长时间没有写些什么了!我唯一感觉的旧时间过得很快!我还有很多事情没有做!我的努力了!

这种公司再也呆不下去了!我要跳槽!_如果你觉得公司呆不下去了_无忧求职锦囊的博客-程序员秘密

谈及“奇葩规定”四个字,单纯的加班不给加班费,已然弱爆了。前程无忧论坛曾经对“奇葩公司奇葩规定奇葩老板”展开了相关调查,在网友们对各自公司进行强烈吐槽的同时,公司给出的解释看上去又似乎合情合理。我们列举了以下十条“奇葩”规定,博君一笑的同时也希望员工和公司都能互相体谅,毕竟大家是利益共同体。 1.去卫生间也受限制 奇葩指数:十只烂番茄     员工:公司的做法太没人性了。人总有

UVa 10305 - Ordering Tasks_StableCatsith的博客-程序员秘密

拓扑排序的入门题。刚开始理解起来有一点困难,现在还是半知半解,当初学树的时候也这样。过几天

第7课 微信小程序实现图片搜索器案例:_舜岳的博客-程序员秘密

第7课 微信小程序实现图片搜索器案例:效果图如下:来我们来看看代码的全局样式:首先在app.json内的pages把需要的index1、index2页面注册之后我们只需写index1、index2两个页面 即可实现图片搜索小案例首先我们来看以下index1页面内的代码:index1.js代码:// pages/index1/index1.jsPage({ data: ...

[Python] suds for Python3.X_python 3 suds_cindysz110的博客-程序员秘密

suds for Python3.X should be suds-jurko-rw-r--r--   1 root root    255758 Dec 21 06:29 suds-jurko-0.6.zip[[email protected] ~]# unzip suds-jurko-0.6.zipArchive:  suds-jurko-0.6.zip  inflating: s

RxJava----操作符:辅助操作符_pepe_士奇的博客-程序员秘密

Observable Utility Operators(辅助操作符)delay顾名思义,Delay操作符就是让发射数据的时机延后一段时间,这样所有的数据都会依次延后一段时间发射。 log("start subscrib:" + System.currentTimeMillis()/1000); Observable<Long> observable = Obser

推荐文章

热门文章

相关标签