下载
先去官网下载压缩包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版本