hadoop 2.7.3 源码分析(一):环境搭建

回头想想自己学习大数据相关的技术已经有很长的时间了,在这段时间里主要学习了hadoop、zookeeper、hbase、kafka、flume、spark、storm等等,有一些在工作当中使用到了(比如zookeeper、hadoop)就比较熟悉但大部分都是浅尝辄止没有做深入的研究学习。
hadoop作为时下流行的大数据处理框架,其使用范围广,开发社区活跃。在国内很多大型公司如京东、百度、阿里等都使用hadoop处理其离线数据。很多大型公司都会根据其业务需求修改hadoop源码完成一些定制化的功能,所以作为开发人员深入的学习hadoop源码还是非常有价值的。
那么怎么学习源码呢?关于这个问题我先讲讲我工作当中遇到的一件事情,前段时间公司有一个需求是使用zookeepe监控hadoop的所有节点(NameNode、DateNode),当时我的想法是相应节点启动的时候去zookeepe相关目录下注册一个临时节点,这就需要去研究一下他的源代码。首先查看它的启动脚本start-dfs.sh 在它的第63行看到他启动另外一个脚本bin/hdfs 传入了一些参数(start namenode $nomeStartOpt)。然后我们打开bin/hdfs,在第135行我们可以看到其定义一个CLASS=’org.apache.hadoop.hdfs.server.namenode.NameNode’,最后我在hadoop-hdfs-project这个工程下找到这个类定位其main函数(1552行),在main函数中调用createNameNode创建namenode节点,所以如果需zookeeper中注册该节点的话只需要createNameNode调用成功后创建节点就OK。至此我就突然明白,其实学习源代码的方法很简单,你只需要顺着程序流程进行学习就可以。你从函数的入口读到其出口那么你就读懂了,查看你的修改是否生效,你可以简单的System.out.println(“hello world”)然后重新编译,执行,查看其是否正确输出 “hello world”以印证自己的想法。
通过这件事情我就对自己如何学习源码有了一些思路,在一个最小、最简单的环境下(对hadoop来说就是搭建伪分布式)学习其各个模块的源码,最后再拓展到复杂环境。
自己的博客内容根据自己学习的进度进行更新,有时候有人会问为什么要写博客呢?我觉得得主要是出于以下几个方面的考虑

  • 知识积累,加深印象。回头想想我从高中毕业开始,在编程方面学了很多东西,语言方面很早之前学的c、c++、汇编,以及现在工作中使用的java、python。技术方法,很早之前学的windows MFC,驱动程序编程,rootkit,单片机程序开发,JSP,Spring,hibernate,总之就是五花八门,但是现在回头想想,我都学了些什么呢?如果工作当中需要其中某一方面的知识应该在哪里去找呢?对于这些问题如果当时可以根据自己学到的内容整理一些文章出来的话就好了,如果用到就可以快速上手,而不需要重新学习。
  • 梳理思路。作为知识积累的方式不仅仅可以写博客还可以做笔记,但是大部分情况下笔记记录的信息较为零碎,没有一个整体的思路(你记笔记不会写一些自已为什么要学习这个、学习这个有什么好处这些信息吧?),但写博客不同,写博客需要有一个整体的思路,你要让别人看懂,你就必须把你学习背景、学习细节交待清楚,这样不仅仅是方便别人阅读,同时也方便自己以后快速查阅。
  • 锻炼表达书写能力。这点毋庸质疑了,如果你一篇博客都没写过。你可以写一个试试,你就会发现自已真的会感觉到词穷。
  • 分享自己的知识。当然也许自己的知识不是那么准确或者仅适用于自己,但那也没关系啊,又不会吃亏(-_-!)

环境搭建

接下来进入正题,首先要准备开发环境。

1、软件环境

以下为我本地的环境
- 操作系统:Ubuntu Desktop 16.04
- JDK:1.8
- ssh
- hadoop版本:2.7.3
- mvn

2、安装过程

安装jdk

将下载到的jdk-8u111-linux-x64.tar.gz 解压并复制到/opt/local目录下,在/etc/profile中添加以下内容

export JAVA_HOME=/opt/local/jdk1.8.0_111
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar</
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iblks

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值