java二次开发流程,源码修改流程(Hadoop)

1、困难

        在实际业务场景中,目前现有的框架在很大情况下可能不能满足现有的需求,用代码进行二次开发就是最好的选择。在一开始进行的时候,根本无从下手是一方面,因为源码的量特别大,如果是在官方的源码中,基本上是没有注解的,有的一般也是对方法的总体概述以及参数的介绍,往往困难是源码中的某一步我们理解不了,导致整个流程无法理解是一方面。另一方面是如何阅读源码,用什么来阅读源码。对于java开发者来说,我们在ide集成开发工具中从maven仓库中引入的依赖就是一个个jar包,打开jar包我们可以直接看的到源码,但是却不能修改。当然这里有一个办法就是从官网下载源码包然后在源码的右上角可以选择本地jar包这样便可以修改了,但是实际上修改完之后还是使用的是maven引入的jar包依赖,如果想实现自定义jar包,便只能自己引入第三方jar包,而不是从maven仓库中下载。

2、解决方案

        在Hadoop大家族中,我们有非常多的组件,而Hadoop官方的安装包中只是集成了其中的一小部分。

1、了解安装包的目录

java二次开发流程,源码修改流程(Hadoop)_第1张图片

bin:使用hdfs和mapreduce时,常用的Hadoop命令目录。

sbin:管理员常用命令目录,主要用于启动和停止集群。

etc:存放Hadoop的配置文件的目录

include:C语言写的一些工具类

lib:存放Hadoop的本地库文件(对数据进行压缩解压功能)

libexec:存放hadoop配置环境的一些文件

share:本次的主角,存放Hadoop的依赖jar包,在集群运行时所有的一切都来源于这里。

所以要想对Hadoop进行二次开发,我们就必须要更换share目录中的jar包,这里可以根据实际需求替换掉相应的jar包,比如Mapreduce中的各种jar包。

2、更换jar包

        在博主初期修改jar包时,首先碰到的难题就是jar包是一种压缩格式,我们可以轻松的把他解压,但是在打包时会遇到各种压缩软件将它打包成zip的格式,查阅了各种资料最多的说就是说可以先打成zip形式,然后改后缀名的格式,当然这种是完全行不通的。只有一种办法便是不要解压缩,直接在jar包上进行添加删除操作。这里推荐两种软件。

  •         mac版本  betterzip
  •         Windows版本 winRAR

        打开jar包之后我们可以发现,里面都是经过编译器处理之后的class文件,这里便碰到了第二个困难,就是如何打开class文件。当然这里有很多反编译工具,比如说jdGui,当然我们最常用的还是ide,再者比如说我碰到了一个类,在经过编译之后形成了4个class文件,所以如果在相当不熟悉源码文件的时候,不太建议用class文件进行反编译。 

         最推荐的方法还是先经过ide进行源码阅读,然后找到目标的包或者类,将其复制到ide中进行开发,当然其中肯定会报错,因为少了各种各样的包,这里可以经过maven引入相关的依赖。

        当修改完目标类或者包之后,将其进行编译,然后找到ide对应的目录将class文件取出,经由上述两款软件直接进行替换,而不是解压再压缩,最后更换至Hadoop目录下的share文件夹中便成功达到二次开发目的。

3、总结

        当然不仅仅是Hadoop,包括jdk本身都可以这样进行二次开发。

你可能感兴趣的:(二次开发,hadoop,大数据,big,data)