mapreduce实现数据的基本统计分析

同样是月薪未过万的工作,也分两种——

  一种是出卖自己的时间、精力乃至生命,来换些钱;

  一种是构建你生命和人格的同时,顺便赚些钱。

话好说,事难做。


1、writable类用于实现数据的序列化和反序列化存储传输;

        序列化指:将数据转化为二进制,反之亦反

2、value . toString()方法将value的类型转化为String类型

       value . toString().  split("n")  指,将转化的字符串,按n的格式分开

    
Split("。")是按照什么拆分字符串
给你举个例子:比如你的content字段的值是 1。2。3
按照 。把值拆分成数组
string[] value=Eval("content").ToString().Split("。")

3、NumberFormatException

      数字转化异常,比如:转化过程中遇到“164//240”因为有“//”所以会抛出异常


4、在shell命令行下编译java文件,并且压缩为jar包

               1、编译java文件

[xm@master wordclass]$ javac WordCount.java

这里写图片描述

                2、打jar包

[xm@master wordclass]$ jar -cvf WordCount.jar ./WordCount*.class

mapreduce实现数据的基本统计分析_第1张图片

以上操作必须要在java文件所在目录下操作

                3、jar包中的META-INF/MANIFEST.MF文件下,需要有键值对:main-class: xxx

                                且每个键值对的key后面必须要有一个空格

5、在hadoop下运行的java程序好像都是jar包,然后复制到hadoop的mapreduce目录下执行

        有待查证

6、经过一上午的摸索,我觉得先放弃纯粹的自主编程比较科学。

       现在转化思路,把安骏给的例子调试通

7、在调试安骏给的例子的时候,发现自己的环境还没完全搭好;

       还差一个hadoop的插件没安装,但是死活安不上

       首先是2.9.0安装到中间,new location无法执行;然后尝试换了一个0.20.2插件之后,连原来的进度都到不了了

       明天早起,对于这个插件;

       1、卸载eclipse,重新安装,再次尝试安装2.9.0插件(day2:eclipse重新安装成功,尝试安装插件)

            后续:插件安装依然不成功,new location点击无响应;

                        查找资料后,发现插件缺少jar包,应该有

                        commons-cli-1.2.jar和hadoop-core.jar两个包。

                将HADOOP_HOME/lib目录下的 commons-configuration-1.6.jar , commons-httpclient-3.0.1.jar , commons-lang-2.4.jar , jackson-core-asl-1.0.1.jar 和 jackson-mapper-asl-1.0.1.jar

                        等5个包复制到hadoop-eclipse-plugin-0.20.203.0.jar(插件)的lib目录下。                  

                        我的jar包也并不齐全,缺少hadoop-core.jar;commons-httpclient-3.0.1.jar;

                        hadoop-core.jar可能是老版本的jar包

                        未在hadoop的lib目录下找到commons-httpclient-3.0.1.jar包,从网上下载了一个

                        导入jar包后,还需要改写配置文件MANIFEST.MF

Bundle-ClassPath: classes/,lib/hadoop-core.jar,lib/commons-cli-1.2.jar,lib/commons-httpclient-3.0.1.jar,lib/jackson-core-asl-1.0.1.jar,lib/jackson-mapper-asl-1.0.1.jar,lib/commons-configuration-1.6.jar,lib/commons-lang-2.4.jar

                        原配置文件中有 commons-httpclient-3.0.1.jar的记录

                        然后重启软件,并没有什么卵用

                        我想卸载这个最新版本的eclipse,下载一个旧版本的


       2、如果依然无法成功,那就在网上找到自己编译制作hadoop插件的教程,尝试自己制作

       3、叫安骏来确认,看看真正的编译环境是不是插件安装好之后的样子

8、明天还需要导包,将文件编译出错的包,网上说必须要导的包都导入到eclipse里面

9、以我目前的能力,暂时就只能做到这些了,准备好和降老师交代你无法按时完成任务的情况,听候发落

10、先拜托安骏在他的电脑上运行出求最值函数

         然后再考虑在自己电脑上实现;安骏的电脑上也调不出。这条路彻底断了

11、现在先开始导包搜一搜导包的教程;

         需要导入hadoop的share文件下common,hdfs,mapreduce,yarn根目录下jar包和对应文件lib目录里面的所有jar包

12、hadoop eclipse插件可以安装上了;用了eclipse旧版本的juno,和旧版本的插件0.20.2

        真不知道这个抽风的hadoop是怎么个意思,明明和自己版本号匹配的插件安装不上,旧版本反而可以

        所以还是出问题了;配置完成后

        显示   error: server IPC version 9 cannot communicate with client version 3

        //todo

        IPC version:

        client version:

        初步估计还是因为版本问题,考虑原路返回,再试一次,这次不行的话就先不安装插件了,或者自己编译生成插件

        自己编译需要回到windows环境;网址:https://www.cnblogs.com/zlslch/p/5891331.html;

                                                                      https://blog.csdn.net/hehuan1990/article/details/79431861;

                                                                      https://blog.csdn.net/congcong68/article/details/42098391

13、接下来需要考虑new hadoop location的准备工作

        查找core-site.xml 和mapper-site.xml

14、现在导入安骏的例子,导入实例运行所需要的库及jar包

        导入库和jar包成功;程序无报错;

15、现在开始尝试将mapreduce函数导出jar包,放在hdfs上执行

         好像避免不了要用到hadoop eclipse插件

16、降老师给的意见是安装hadoop插件,自行编译,不要下载

        现在下载了编译所需的ANT插件;在配置环境变量时进入vim需要用到强制保存退出命令

        :w !sudo tee % 

        很实用的命令

17、现在的问题是添加环境变量之后就会陷入无限重新登录

        只能在每次登录之后添加环境变量

                 在每次关机之前删除环境变量(在/etc/profile目录下面)

                开机启动时候需要把环境变量写到/etc/profile里面


环境变量如下

export HADOOP_HOME=/home/jhon_s/hadoop/hadoop-2.9.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME=/home/jhon_s/java/jdk1.8.0_131
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin
export ANT_HOME=/home/jhon_s/java/apache-ant-1.9.8
export PATH=$ANT_HOME/bin:$PATH
export CLASSPATH=$ANT_HOME/lib:$CLASSPATH

直接在默认目录下输入
vim /etc/profile
在最后一行复制这些环境变量
:w !sudo tee %
保存更改
source /etc/profile
使得更改生效

java -version

查看是否生效


关机之前,删除以上环境变量;


18、之后环境变量的东西还是不太对,后来就把全部的环境变量重新写到~/.bashrc里面了

19、现在我想知道,hadoop是否需要配置环境变量

         在hadoop的安装目录下;执行hadoop version命令

        jhon_s@Jarvis:~/hadoop/hadoop-2.9.0$ bin/hadoop version

        能够得到hadoop的版本信息

        可能配置过环境变量之后,就能在任意路径执行hadoop命令

        这就是环境变量的作用

        那么按照这种思路,所有的环境变量都可以不配置。

        那么编译就在指定文件路径下,编译就行。

        所以现在我们可以编译插件了。

        为什么没有早点搞清楚环境变量的作用?

20、以后的工作计划是这样

        先在,linux系统上面尝试,看看能不能把插件编译成功

        如果尝试没有结果的话,那就在windows里面装一个虚拟机,在虚拟机里面重新来一遍

        依照樊的教程,试试看

        或者,卸载hadoop2.9.0;重新安装2.6.0,严格按照网上关于插件编译的教程执行

        或者,先问问公司的人,看看他们是否可以解决这个问题

        尝试插件编译的时间最好在五一左右,需要一整块的时间,累计分配24小时,时间片长度最低三个小时

        编译失败之后,就可以尝试问问公司的人

        在这之前,需要明白你的问题是什么,

                1、插件编译失败?

                2、如何在eclipse上编程,并导到hadoop上,能成功执行

                3、如何连接eclipse和hadoop?

                大概是这个路数

                今天很烦啊,状态不太好,需要冷静冷静,好好想想。

21、来开始工作吧

        https://www.cnblogs.com/shishanyuan/p/4178732.html

        上面的这个连接里面有完整的插件使用过程

        我们还是需要试一试,看看能不能编译成功插件

        是不是需要重新安装Hadoop2.6.0,重新安装需要配置的东西和过程还是否熟悉

        还接触到一个Hadoop stdio ,好像也可以达到类似功能,只是目前没有找到下载资源,

        似乎直接用vim也可以编程,但是不知道怎么做

22、准备重新安装hadoop-0.20.2

        <value>/home/pc/hadoop-0.20.2/tmp/hadoop-${user.name}value> 

        这一句在core-site.xml里面其中${user.name}被我修改为jhon_s可能会报错

        访问namenode时候的网址应该写成:http://localhost:50070/dfshealth.jsp;注意后缀是jsp

        hadoop-0.20.2安装完成

        其中已经预备了hadoop-eclipse插件!

        下面就可以试试这个插件了

23、先尝试用几个hdfs命令

        放几个文件试试

        没有问题,示例程序完成,数据成功加载到文件系统中

24、但是,eclipse出了问题,不能打开

        可能需要重新配置java环境变量

        重新安装eclipse

25、linux的环境变量配置;

        目前接触到两种

        1、修改.bashrc,但是,貌似因此不能启动eclipse

        2、 修改/etc/profile,但是,可能因此出现无限重启         

        重新试过,修改了/etc/profile,没有使用source命令,没有出现无限重启,eclipse可以正常启动

26、在配置hadoop eclipse插件时候,地址栏填localhost报错,提示无法连接,填192.168.1.111时候没有报错

27、使用hadoop的旧版本自带的连接工具,可以连接到hadoop,但是并不能看见hdfs上原本的文件

        可能是因为hadoop的安全模式,或者因为linux 的防火墙

        先尝试关闭了linux防火墙,

        关闭linux防火墙成功解决了Listing folder content...

        hdfs文件不显示,这个问题成功解决,现在hfds上的所有文件都能显示       

28、可以编程序了,但是,突然间无从下手啊,不知道要从哪里开始,

        可以有这几个方向

        1、看降老师发的程序

        2、看安骏的资料

        3、看樊泓彬的视频

        先看看降老师的程序,看懂之后,尝试跑出来。

        后续可以研究研究storm,看看有没有什么帮助。

        直接看程序很难懂啊,我还是去看看视频吧。但是这么就不能听歌了,来,看

29、int是一个数据类型,integer是封装int的包装类

30、mapper的输入参数有四个,类型需要注意,text类型的一定要导入hadoop的

31、

















你可能感兴趣的:(mapreduce实现数据的基本统计分析)