1、困难

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

2、解决方案

在Hadoop大家族中,我们有非常多的组件,而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本身都可以这样进行二次开发。

java二次开发流程,源码修改流程(Hadoop)相关推荐

  1. 循序渐进,探寻Excel二次开发.NET源码(3)-ExcelBase类

    循序渐进,探寻Excel二次开发.NET源码(3)-ExcelBase类 --Excel打开关闭打印预览 作者:长江支流 关键字:.NET.Excel.Excel打开.Excel关闭.Excel打印预 ...

  2. 类似爱美刻 右糖 轻剪辑 捷映 秀展网 秀多多 来画 创视网 传影 影大师 闪剪源码 技术源头 二次开发 提供源码 逗拍 趣推 飞推 美册 搞定视频 简影 剪影 爱字幕 幸福相册 八角星

    需要源码的下面评论 介绍 类似爱美刻 右糖 轻剪辑 捷映 秀展网 秀多多 来画 创视网 传影 影大师 闪剪源码 技术源头 二次开发 提供源码. 类似 逗拍 趣推 飞推 美册 搞定视频 简影 剪影 爱字 ...

  3. python接入Vissim二次开发,源码

    python接入Vissim二次开发,源码,刚开始学习,为了写论文,一样的朋友可以一块研究代码 代码地址 DQN VISSIM4.3 tensorflow1.2.0 https://github.co ...

  4. 安卓java编辑器eclipse_Eclipse开发Android源码的详细教程

    用eclipse + ADT作为android开发工具,可以说是很方便的,在HelloActivity小程序里我们就感觉到eclipse功能的强大. 1.可以使用eclipse来编辑JAVA程序.检查 ...

  5. 【二十】Jmeter:插件二次开发—— JMeter 源码导入 eclipse

    目录 一.源码官网下载 二.lib 目录官网下载 三.源码 & lib 目录 下载 四.导入eclipse 一.源码官网下载 点击前往官网下载并解压:下载地址 二.lib 目录官网下载 点击前 ...

  6. Java企业微信开发_00_源码及资源汇总贴

    一.源码 此系列教程的源码我都放在了github上,欢迎fork以及关注. 传送门:https://github.com/shirayner/WeiXin_QiYe_Demo/tree/master ...

  7. ThingsBoard 二次开发之源码分析 5-如何接收 MQTT 连接

    欢迎加入ThingsBoard技术交流群 这里可复制Q群号:69998183 关注"云腾五洲":获取二开ThingsBoard物联网平台演示 交流社区:ThingsKit-Thin ...

  8. 网站二次开发模板源码下载

    一天我无意发现一个特别好的的网站,它就是:http://www.aspku.com/,里面收集各种商业网站源码,非常利于我们程序员进行二次开发,大大缩短开发周期.今天的分享到此就结束了.谢谢大家

  9. 《深度解析Java游戏服务器开发》源码

    不知什么原因,出售的<深度解析Java游戏服务器开发>一书中,没有给出源码,这里补上,源码已经上传至github: https://github.com/hjcenry/JavaServe ...

最新文章

  1. Linux进程间通信(IPC)-------消息队列
  2. Main-Accounts-and-Financial-Dimensions-Data-Model_thumb
  3. 如何判断字符串所用何种加密编码
  4. 九降风之曾经的岁月 永远的兄弟 一块硬盘的爱情
  5. 两字典(dict)组合(重复键进行加法)一行命令实现Python
  6. Angular中父组件通过ViewChild调用子组件的方法
  7. VTK:相互作用之MouseEvents
  8. html表单提交后怎么发送邮箱,Dreamweaver中用表单制作了留言板,如何将内容提交后发到指定邮箱?...
  9. 【今日CS 视觉论文速览】 24 Jan 2019
  10. mysql 多表删除
  11. org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standard
  12. 神经网络 神经元_神经去耦
  13. [Android]安卓简易计算器 (使用GridLayout)
  14. 学习笔记(1):JDBC连接池
  15. Linux绚丽屏保xscreensaver安装
  16. 爬虫之路——DAY2
  17. (10.1.6)极简主义
  18. 妥妥的世界第一:为什么MT4软件的地位无法撼动?
  19. JAVA NIO文件映射、通道、流读写文件示例
  20. java学生喂养宠物

热门文章

  1. Python 地理空间分析
  2. BMSSRTP日志(三)
  3. 2020-07-18 为了 dmz 破解家里的 华为 hs8145c5
  4. 驾考/驾驶证之心得体会分享
  5. 重装系统十大排行:一键重装系统对比
  6. C++数星星(树状数组)
  7. android mp3 编码,Android 如何采用Lame编码器编码mp3文件
  8. 人工神经网络的拓扑结构,三层神经网络结构图
  9. QT添加库(静态库和动态库)
  10. linux命令kp使用方法,linux使用基础