阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu 16.04下将Hadoop2.7.3源代码导入到Eclipse Neon中

112次阅读
没有评论

共计 3808 个字符,预计需要花费 10 分钟才能阅读完成。

0. 为什么会有这篇:

这篇文章的目的在于帮助想学习 Hadoop 源码的内容,却在导入的过程中出现了各种问题的人。或许你一定找了很多博客都无果,那么不用担心,我和你一样,这也是这篇文章存在的意义,废话少说,进入正题。

导入的主要过程如下:

1. 下载源代码:

首先,登录 hadoop 的官网(http://hadoop.apache.org/),寻找源码包。

下载地址:http://hadoop.apache.org/releases.html

2. 解压并打开 BUIDING.txt:

tar -xvf hadoop-2.7.3-src.tar.gz
cd hadoop-2.7.3-src
vim BUILDING.txt

有如下两段:

第一段:

Installing required packages for clean install of Ubuntu 14.04 LTS Desktop:

* Oracle JDK 1.7 (preferred)
  $ sudo apt-get purge openjdk*
  $ sudo apt-get install software-properties-common
  $ sudo add-apt-repository ppa:webupd8team/java
  $ sudo apt-get update
  $ sudo apt-get install oracle-java7-installer
* Maven
  $ sudo apt-get -y install maven
* Native libraries
  $ sudo apt-get -y install build-essential autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
* ProtocolBuffer 2.5.0 (required)
  $ sudo apt-get -y install libprotobuf-dev protobuf-compiler

第二段:

Importing projects to eclipse

When you import the project to eclipse, install hadoop-maven-plugins at first.

  $ cd hadoop-maven-plugins
  $ mvn install

Then, generate eclipse project files.

  $ mvn eclipse:eclipse -DskipTests

At last, import to eclipse by specifying the root directory of the project via
[File] > [Import] > [Existing Projects into Workspace].

综合这两段内容,如果是在 14.04 或许可以成功,但是实际在 16.0 的版本出现了问题

3. 解决 BUIDING.txt 里的问题:

主要问题有两个:

一个坑是 jdk 的问题:

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer

如上的过程是为了安装 jdk7,实际执行的过程会因为无法 FQ,导致秘钥无法下载。

替代的方法:从 oracle 官网下载

从命令行里提示的结果可以看到:

这个 jdk 的版本号是 jdk-7u80

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Oracle 的官网,这个只能自己下载,下载前必须接受协议。

当然为了方便我会将这个导入过程所有用到的包全部放进百度云里。链接附在本文的最后了。

下面怎么做就很简单了,我想对于一个要看 hadoop 源码的人,装个 jdk,配置个环境变量应该是没问题的吧。

这个第二个坑就是 ProtocolBuffer 的版本问题:

这个坑尤其大,导致我编译了一半,才发现问题,这个系统默认为我装上了 2.6.1,醉了。。。。。。

替代方案:

从官网下载 ProtocolBuffer2.5.0 来编译安装

如果你和我一样也被自动安装上了 2.6.1,那就只好卸载了,命令如下:

sudo apt-get purge libprotobuf-dev protobuf-compiler

然后我们下载官网的 protoc2.5.0:

下载地址:

https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz

安装过程:

下载地址:https://code.google.com/p/protobuf/downloads/list
我下载的是 protobuf-2.5.0.tar.gz
解压:
$ tar -xzvf protobuf-2.5.0.tar.gz
编译:
$ cd protobuf-2.5.0
$ ./configure
$ make
$ make check
安装:
$ make install
查看是否安装成功
$ protoc –version
libprotoc 2.5.0
使用:
$ protoc -I= 输入.proto 文件所在的文件夹 –java_out= 输出 Java 文件的路径 .proto 文件
例如:
protoc –proto_path=src –java_out=build/gen src/foo.proto 

安装过程会有一个坑参照下面解决:

错误原因

protobuf 的默认安装路径是 /usr/local/lib, 而/usr/local/lib 不在 ubuntu 体系默认的 LD_LIBRARY_PATH 里, 所以就找不到 lib

解决办法

(1)在 /etc/ld.so.conf.d/ 目录下创建文件 bprotobuf.conf 文件, 文件内容如下

/usr/local/lib

(2)输入命令

sudo ldconfig

这时, 再输入 protoc –version 就可以正常看到版本号了

4. 接着就是把工程转换成 eclipse 项目:

请注意,若果你网络有访问外国网站比较慢的情况,请修改你的 maven 源至国内源,我使用的阿里云的 maven 仓库:

maven 阿里云中央仓库

maven 作为一个项目管理工具确实非常好用,但是在国内这个网络条件下实在是让人恼火。之前 oschina 的中央仓库可用,现在 oschina 的 maven 服务器关了,一直没找到国内镜像来替代。今天发现阿里云公开了一个中央仓库,大家可以试试。

配置

修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,内容如下:

  <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>

之后就能享受如飞的 maven 下载速度。

一切准备好了,就开始我们编译步骤了

cd hadoop-maven-plugins
mvn install
cd ..
mvn eclipse:eclipse -DskipTests

然后就是漫长的等待了……

附一张最后成功的图:

Ubuntu 16.04 下将 Hadoop2.7.3 源代码导入到 Eclipse Neon 中

编译实际的过程用了应该有 30 多分钟,途中的 26 分钟只是因为 protoc 版本不对后的部分编译时间。

5. 导入到 eclipse 中:

Ubuntu 16.04 下将 Hadoop2.7.3 源代码导入到 Eclipse Neon 中

Ubuntu 16.04 下将 Hadoop2.7.3 源代码导入到 Eclipse Neon 中

 

可以看到全都识别了,finish。

Ubuntu 16.04 下将 Hadoop2.7.3 源代码导入到 Eclipse Neon 中

微量的错,基本不影响看主要的源代码了,当然你也可以去想法修复它们,这至少比直接一导入全是错要来的好了。

环境问题解决,以后就可以愉快的研究 hadoop 的源代码了。

Hadoop2.7.3+Spark2.1.0 完全分布式集群搭建过程  http://www.linuxidc.com/Linux/2017-06/144926.htm

Hadoop2.3-HA 高可用集群环境搭建  http://www.linuxidc.com/Linux/2017-03/142155.htm

Hadoop 项目之基于 CentOS7 的 Cloudera 5.10.1(CDH)的安装部署  http://www.linuxidc.com/Linux/2017-04/143095.htm

Hadoop2.7.2 集群搭建详解(高可用)http://www.linuxidc.com/Linux/2017-03/142052.htm

使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源)http://www.linuxidc.com/Linux/2017-03/142136.htm

Ubuntu 14.04 下 Hadoop 集群安装  http://www.linuxidc.com/Linux/2017-02/140783.htm

CentOS 6.9 下 Hadoop 伪分布式环境搭建  http://www.linuxidc.com/Linux/2017-06/144884.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144931.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3808字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中