下载源码
$ mkdir ~/cdh-building
$ cd ~/cdh-building
# cdh6.2.0-release
$ wget 'https://github.com/cloudera/hadoop-common/archive/cdh6.2.0-release.tar.gz'
编译
背景
- 第一次编译,一脸懵逼。建议先把
BUILDING.txt
文件大致看一遍。 - 如
BUILDING.txt
所述,我们将在mac本地编译?还是在docker中编译?本人先尝试在mac本地进行编译,安装了一堆Requirements后开始编译,经过漫长地等待,最终编译成功,哈哈。。
但是,很可惜。。部署到linux系统上发现native包是不可用的,将出现如下告警信息:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
。
mac本地编译后的 ${HADOOP_HOME}/lib/native 如下:
$ ls -l /opt/hadoop-3.0.0-cdh6.2.0/lib/native/
total 9300
drwxr-xr-x 2 501 root 4096 Jun 27 09:25 examples
-rwxr-xr-x 1 501 root 167436 Jun 27 09:09 libhadoop.1.0.0.dylib
-rw-r--r-- 1 501 root 705560 Jun 27 09:09 libhadoop.a
-rwxr-xr-x 1 501 root 167436 Jun 27 09:09 libhadoop.dylib
-rw-r--r-- 1 501 root 907408 Jun 27 09:25 libhadooppipes.a
-rw-r--r-- 1 501 root 318824 Jun 27 09:25 libhadooputils.a
-rwxr-xr-x 1 501 root 78144 Jun 27 09:13 libhdfs.0.0.0.dylib
-rw-r--r-- 1 501 root 277632 Jun 27 09:13 libhdfs.a
-rwxr-xr-x 1 501 root 78144 Jun 27 09:13 libhdfs.dylib
-rwxr-xr-x 1 501 root 447940 Jun 29 06:23 libnativetask.1.0.0.dylib
-rw-r--r-- 1 501 root 5900080 Jun 29 06:23 libnativetask.a
-rwxr-xr-x 1 501 root 447940 Jun 29 06:23 libnativetask.dylib
采用docker方式编译
确认Virtualbox、docker toolbox是否已安装,没安装的去安装。然后就开启傻瓜式流程。。。
- 准备
# 创建虚拟机
$ docker-machine create --driver virtualbox --virtualbox-memory "4096" hadoopdev
# 不懂看文档:https://docs.docker.com/machine/reference/env/
$ eval $(docker-machine env hadoopdev)
# 查看脚本:创建hadoop-build、hadoop-build-1000两个image,并运行hadoop-build-1000
$ ./start-build-env.sh
- 开始编译(
./start-build-env.sh
执行完后就进入容器内部)
# pwd
bruce@a63db3c3a70e:~/hadoop$ pwd
/home/bruce/hadoop
# ls -l
bruce@a63db3c3a70e:~/hadoop$ ls -l
total 232
-rw-r--r-- 1 bruce staff 19869 Mar 5 16:42 BUILDING.txt
-rw-r--r-- 1 bruce staff 148835 Mar 5 16:42 LICENSE.txt
-rw-r--r-- 1 bruce staff 20891 Mar 5 16:42 NOTICE.txt
-rw-r--r-- 1 bruce staff 1490 Mar 5 16:42 README.txt
drwxr-xr-x 1 bruce staff 896 Mar