• 距离老板留给我并行化做属性约简的任务开始到今天,已是一周有余,期间经历过各种呕心沥血,通宵达旦,终于运行出了一个结果。其中在配置过程中,浪费了爷大量的时间,有时回想自己上个周干的事情,会觉得分明的本末倒置。

一会就要开组会了,有时特么的我做报告,把几个周以来整理的RS Review又看了一遍,希望过会不要再出什么幺蛾子,小爷我真是伤不起了啊!!周五晚上只睡了不到两个钟头,关键是还没有觉得很困,果然,,人如果心里有什么事情压身的话,是寝食难安的哟!

一直觉得,磨刀不误砍柴工,所以一直在配置配置配置,希望配置出最好的Eclipse工具,以后可以简便的运行自己的Hadoop程序。人生道路上总是充满了艰辛曲折,配置了几天,重装了N次系统,终于算是配置成功,对MapReduce有了进一步了解,但是对一些Configure等还是一头雾水。

说说我的吐血过程中遇到的问题吧:

  • Hadoop到底该放在哪里?

之前一直是放在/usr/local中,也就是根目录下,但是用过Linux系统的人都知道,进入根目录是需要用户权限的,把它放进去配置一下用"sudo"命令就可以解决了。但是才程序运行中如果需要访问根目录下的东西,就会有些棘手。于是有朋友跟我说,最好把hadoop放在用户目录下,这样就不会出现什么问题,自己配置时也会方便一些。于是我听从建议,将hadoop放在了~/Documents下。很easy的配置完成,兴高采烈的打开Terminal,启动hdfs时却怎么也启动不了。一是说JVM无法启动,二是说找不到相关文件,那个让人上火哟。无奈只好删掉,重新在根目录中解压配置,算是解决了这个问题。所以,到底该把Hadoop放在哪里,我认为还是放在根目录下为妙,防止自己误改,,后面在配置好Eclipse,妥妥哒~

  • hadoop怎么更改键值对类型?

翻看书上和网络上WordCount或者倒排索引的例子,都是用的改写的map(Object key, Text value, Context context)这个方法,相应的最后的输出键值对则是context.write(Text, IntWritable)。那么如果我想把输出键值对更改成其他类型呢,如都是字符串该怎么弄?查了好多博文和API终于明白了,原来在map()方法集成的接口是Mapper(KeyIn, ValueIn, KeyOut, ValueOut)接口,它有四个参数,指定了输入输出键值对的类型,我们可以为它们赋值为各种map中的基本类型,如Text,IntWritable,LongWritable等等,这样,输入输出时就可以自己掌控了。

  • Hadoop的输入输出格式是什么?

现在还没太搞懂FileInputFormat与TextInputFormat等的关系。大概是这样,我们用的是FileInputFormat,它默认使用的是TextInoputFormat,这种方式,一个文件生成一个Mapper。而默认的TextIF的输入格式是(key,value),key代表该文件某一行相对于开头的偏移量,value代表一行的内容,我们可以从context中获取文件名信息。一个Mapper处理一个文件,它的函数map()则只会读入并处理一行数据。不想把文件分得这么散的话可就要注意了。自己就是在如何一次处理一个文件这里犯了愁,想啊想啊想,想到了明代王重阳对着竹子格物致知的样子。。

  • Mapper类中map()函数之后不能再有东西了麽?

是的。这里也是纠结了好久,该开始不知为什么,在map()函数后加入for循环等,老是提示出错,以为是eclipse又出了问题,结果多次实验证明,是map()函数后不能在有内容。map直接写入context,然后传递给reducer处理。

  • 怎么调用含有静态公共变量的类中的函数?

这个问题不止是在Hadoop程序中,一般的java程序也会遇到。简单来说,就是,要保证被调用类中的全局静态变量被赋值,否则会出现空指针错误。

可以抽象出来的问题暂时就这么些了,以后有问题继续补充。。

第一个贴上XMT标签的Hadoop程序的更多相关文章

  1. 在Hadoop1.2.1上运行第一个Hadoop程序FileSystemCat

  2. 史上最详细的Hadoop环境搭建(转)

    转载的文章,请告知侵删.本人只是做个记录,以免以后找不到. 前言 Hadoop在大数据技术体系中的地位至关重要,Hadoop是大数据技术的基础,对Hadoop基础知识的掌握的扎实程度,会决定在大数据技 ...

  3. 转 史上最详细的Hadoop环境搭建

    GitChat 作者:鸣宇淳 原文:史上最详细的Hadoop环境搭建 关注公众号:GitChat 技术杂谈,一本正经的讲技术 [不要错过文末活动哦] 前言 Hadoop在大数据技术体系中的地位至关重要 ...

  4. 马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动(转)

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  5. 大数据学习——点击流日志每天都10T,在业务应用服务器上,需要准实时上传至(Hadoop HDFS)上

    点击流日志每天都10T,在业务应用服务器上,需要准实时上传至(Hadoop HDFS)上 1需求说明 点击流日志每天都10T,在业务应用服务器上,需要准实时上传至(Hadoop HDFS)上 2需求分 ...

  6. (linux shell)第一章--小试牛刀(上)

    来源:(linux shell)第一章--小试牛刀(上) 从今天開始,我们一起来学习<linux shell脚本攻略>这本书. 1.1简单介绍 shell脚本一般是一个以#!起始的文本文件 ...

  7. HTML中的上下标标签的演示

    HTML中的上下标标签的演示 #table_head>td { font-weight: bold } tr { text-align: center } 作用 标签 演示代码 呈现效果 上标 ...

  8. input file 文件上传标签的样式美化

    input file 文件上传标签的样式美化 将<input type="file">的透明度设置为0: <input type="file" ...

  9. UI标签库专题四:JEECG智能开发平台 Upload(上传标签)

     1. Upload(上传标签) 1.1.  參数 属性名 类型 描写叙述 是否必须 默认值 id string 上传控件唯一标示 是 null name string 控件name 是 null ...

随机推荐

  1. jQuery 切换图片(图标)效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. PHP无法用下标访问

    php数组分为普通数组和关联数组,普通数组可以用下标访问,而关联数组不可以.

  3. java简单web爬虫(网页图片)

    java简单web爬虫(网页图片)效果,执行main()方法后图片就下载道C盘的res文件夹中.没有的话创建一个文件夹代码里的常量根据自己的需求修改,代码附到下面. package com.sinit ...

  4. maven-认识

    1.认识maven maven是强大的项目构建工具,也是依赖管理工具 使用maven前提是安装JDK maven非常重要配置文件:setting.xml 3.maven工程 maven工程的约束: 主 ...

  5. Windows下安装Mysql5.5.27(社区版)

    所有平台的 MySQL 下载地址为: MySQL 下载. 挑选你需要的 MySQL Community Server 版本及对应的平台. 运行mysql-5.5.27-win32.msi 进入欢迎界面 ...

  6. I/O流、文件操作

    1)操作文件 Path和Files是在JavaSE7中新添加进来的类,它们封装了在用户机器上处理文件系统所需的所有功能.Path表示的一个目录名序列,其后还可以跟着一个文件名.路径中的第一个参数可以是 ...

  7. git克隆出错 github clone Permission denied (publickey) fatal Could not read from remote repo

    原文网址:http://blog.csdn.net/feeling450/article/details/53067563 github clone "Permission denied ( ...

  8. ruby Dir类

    类方法 1. Dir[pat]    Dir::glob( pat) 返回一个数组,包含与指定的通配符模式 pat 匹配的文件名: * - 匹配包含 null 字符串的任意字符串 ** - 递归地匹配 ...

  9. 基于STM32F103的Max30100心率、血氧检测代码(转载)

    MAX30100是能够读取心率.血氧的传感器,通信方式是通过IIC进行通信.其工作原理是通过红外led灯照射,能够得到心率的ADC值.       MAX30100的寄存器可以分为五类,状态寄存器.F ...

  10. idea启动spring boot无法加载或找不到主类

    问题产生原因:moudle名称修改,导致项目启动不了 在Terminal界面中执行以下三个命令,我在执行第一个命令的时候报了一个找不到dependency的错误,把那个报错的dependency删了就 ...