下载

先去官网下载压缩包wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz

编译

因为官网上是在32位机器上编译的文件,所以在64位的linux机器上运行会报警告
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
需要自己在64位上重新编译源码,然后替换lib/native的文件,也可以直接使用编译的全部文件,详见

maven

进入hadoop-2.8.0-src目录
执行maven打包命令mvn package -Pdist,native -DskipTests -Dtar
编译完成后把hadoop-dist/target/hadoop-2.8.0/lib/native下的文件替换到安装的hadoop/lib/native下,再运行就不会报上面的警告了

编译hadoop会对环境有要求,需要一些其他工具,我编译成功前又安装了以下工具

protobuf

下载protobuf的安装包wget https://github.com/google/protobuf/archive/v2.5.0.tar.gz
从github的下载的代码要先执行 ./autogen.sh 生成configure文件

这里hadoop2.8必须要protobuf2.5才行,之前我下的3.1安装后才知道于hadoop不相配.但是2.5的autogen.sh已经比较老了,里面访问的google的代码已经迁移到github上了,所以根据3.1的autogen.sh来改写2.5的,让文件能正常下载解压

 ./configure
 make
 make check
 make install
protoc --version #验证安装成功

cmake

报错

 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (make) on project hadoop-pipes: An Ant BuildException has occured: Execute failed: java.io.IOException: Cannot run program "cmake" (in directory "/xxx/hadoop-tools/hadoop-pipes/target/native"): java.io.IOException: error=2, No such file or directory -> [Help 1]

下载wget --no-check-certificate http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
解压
安装

./bootstrap
make
make install
cmake --version #检查是否安装成功

openssl-devel zlib-devel

报错

 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (make) on project hadoop-common: An Ant BuildException has occured: exec returned: 1
 [ERROR] around Ant part ...<exec dir="/usr/local/hadoop/hadoop-2.4.0-src/hadoop-common-project/hadoop-common/target/native" executable="cmake" failonerror="true">... @ 4:138 in /usr/local/hadoop/hadoop-2.4.0-src/hadoop-common-project/hadoop-common/target/antrun/build-main.xml
    

安装openssl-devel zlib-devel
yum install openssl-devel zlib-devel
报错

Cannot find appropriate C++ compiler on this system

安装g++
yum install gcc-c++

三种模式

hadoop有三种模式 standalone(单机模式),pseudo-distributed(伪分布式),fully-distributed(完全分布式);
单机模式是用来运行非分布式模式,一个单独的java进程.经常用来调试.
伪分布式模式也运行在一个单节点上,每个hadoop守护线程运行在分开的java的进程.参考
完全分布式.参考.

设置hadoop多节点集群

参考

配置hosts

vi /etc/hosts

这样就可以使用域名访问其他节点

配置ssh

配置ssh密钥访问,让集群节点之间能互相访问,配置好后

ssh <remote_host>  #就能登录到另一个节点

配置hadoop

hadoop-env.sh

vim <hadoop_dir>/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/java

确认hadoop已经安装了

<dir>/bin/hadoop hadoop version
如果安装完成就会显示hadoop版本