一、hadoop集群结构介绍
hadoop自身集群中包含两个子集群,它们分别是hdfs集群、yarn集群;hdfs集群用于管理数据文件,而yarn集群用于管理集群运算相关的工作。hdfs集群中主要包含两种节点角色(name node、data node),name node即名称服务节点,主要用于为集群提供记录数据文件地址的名称服务,data node即数据节点,主要用于为集群提供存储文件的功能。
集群结构图如下:
二、hadoop官网介绍
官网地址:http://hadoop.apache.org/
hadoop common :内包含rpc框架
Ambarl:页面图形的hadoop管理工具
CDH:商业hadoop版本,包含一个web管理平台,可以停掉服务器、看状态、加节点等等。
三、hadoop安装环境准备
由于是自己学习使用,所以将name node和resource manager安装在同一台Linux服务器上。
1.服务器准备
centos-aaron-h1:192.168.29.144、name node、SecondaryNameNode、resource manager
centos-aaron-h2:192.168.29.145、data node、node manager
centos-aaron-h3:192.168.29.146、data node、node manager
centos-aaron-h4:192.168.29.147、data node、node manager
2.服务器主准备:centos6.9 vmware
3.添加hadoop用户,并且配置sudoer权限
4.同步时间
5.配置centos-aaron-h1到其h1-h5的免密登录
6.关闭防火墙
四、hadoop下载
1.首先从hadoop官网下载hadoop-2.9.1.tar.gz、hadoop-2.9.1-src.tar.gz
五、编译hadoop(编译要求可参照源码包中的BUILD.txt文件)
1.安装jdk1.7(省略...)
2.安装apache-maven-3.5.4-bin.tar.gz
sudo tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
修改配置文件:
sudo vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_45
export M2_HOME=/usr/local/apache-maven-3.5.4/
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
在mirrors中添加国内镜像仓库
vi /usr/local/apache-maven-3.5.4/conf/setting.xml
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
3.Findbug安装,请先下载,地址为:http://findbugs.sourceforge.net/downloads.html
sudo tar -zxvf findbugs-3.0.1.tar.gz -C /usr/local
sudo vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_45
export M2_HOME=/usr/local/apache-maven-3.5.4/
export FINDBUGS_HOME=/usr/local/findbugs-3.0.1
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$FINDBUGS_HOME/bin
4.ProtocolBuffer安装必须使用2.5.0。下载地址 https://code.google.com/p/protobuf/downloads/list
sudo tar -zxvf protobuf-2.5.0.tar.gz -C /usr/local
yum install gcc-c++
//以下建议使用root用户只需,否则可能没有权限创建文件的错误
cd protobuf-2.5.0
./configure --prefix=/usr/local/protobuf
make && make install
sudo vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_45
export M2_HOME=/usr/local/apache-maven-3.5.4/
export FINDBUGS_HOME=/usr/local/findbugs-3.0.1
export PROTOBUF_HOME=/usr/local/protobuf
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$FINDBUGS_HOME/bin:$PROTOBUF_HOME/bin
5.下载安装cmake-3.6.2.tar.gz,下载地址:http://www.cmake.org/download/ 或者 https://gitlab.kitware.com/cmake/cmake/tree/v3.6.2
建议使用root账号进行操作
tar -zxvf cmake-3.6.2.tar.gz
cd cmake-3.6.2
./configure --prefix=/usr/local/cmake
make && make install
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_45
export M2_HOME=/usr/local/apache-maven-3.5.4
export FINDBUGS_HOME=/usr/local/findbugs-3.0.1
export PROTOBUF_HOME=/usr/local/protobuf
export CMAKE_HOME=/usr/local/cmake
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$FINDBUGS_HOME/bin:$PROTOBUF_HOME/bin:$CMAKE_HOME/bin
6.安装zlib-devel,执行命令:yum install zlib-devel
7.安装openssl-devel , 执行命令:yum install openssl-devel
8.安装ant环境
tar -zxvf apache-ant-1.9.13-bin.tar.gz -C /usr/local
配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_45
export M2_HOME=/usr/local/apache-maven-3.5.4
export FINDBUGS_HOME=/usr/local/findbugs-3.0.1
export PROTOBUF_HOME=/usr/local/protobuf
export CMAKE_HOME=/usr/local/cmake
export ANT_HOME=/usr/local/apache-ant-1.9.13/
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$FINDBUGS_HOME/bin:$PROTOBUF_HOME/bin:$CMAKE_HOME/bin:$ANT_HOME/bin
生效环境变量
source /etc/profile
测试
ant -version
9.开始编译hadoop
tar -zxvf hadoop-2.9.1-src.tar.gz
mv hadoop-2.9.1-src hadoop-2.9.1
cd hadoop-2.9.1
mvn package -Pdist,native,docs,src -DskipTests –Dtar 或 mvn package -Pdist,native -DskipTests -Dtar
错误处理:hadoop pipes编译失败,需要安装openssl;然后执行命令:mvn package -Pdist,native -DskipTests -Dtar -rf :hadoop-pipes
编译成功效果图:
编译好的文件路径:/home/hadoop/hadoop-2.9.1/hadoop-dist/target/hadoop-2.9.1.tar.gz
最后总结:编译hadoop工程中很可能会出现假死、网络差导致的jar包下载失败等,可以使用maven clean...命令进行编译。编译过程据说如果顺利的话可以在一个小时内完成,博主编译完成花了半天时间。重要的耐心....
补充知识:maven的setting中可以多配置几个国内镜像
oschina
<mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
repo2
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
net-cn
<mirror>
<id>net-cn</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://maven.net.cn/content/groups/public/</url>
</mirror>
uk
<mirror>
<id>uk</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
ibiblio
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
jboss
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>