您的位置:首页 > 运维架构

Hadoop-2.5.1 编译安装步骤

2014-09-24 12:35 381 查看
环境:  系统  CentOS 6.3 64 位  * 2
Master           10.10.55.112
Slave1           10.10.55.133
软件:  Hadoop- 2.5.1- src.tar.gz
一、准备环境
1.1 分别设置节点ip地址(固定) 此步骤所有节点都要操作
vi /etc/sysconfig/network- scripts/ifcfg – eth0

1.2 修改节点主机名此步骤所有节点都要操作
vi /etc/sysconfig/network
以上两步骤需要重启服务器后才生效

1.3 创建 hadoop 用户及主机名 此步骤所有节点都要操作
useradd   hadoop
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master.Hadoop   //节点服务器设置为 slave1.Hadoop
vi   /etc/hosts
10.10.55.112 master.Hadoop
10.10.55.133 slave1.Hadoop

1.4 建立 hadoop 用户之间相互信任(互相无密码登陆)此步骤所有节点都要操作
切换至 hadoop 用户下执行   ssh-keygen -t rsa
然后将自己的公钥以及其他服务器 hadoop 用户的公钥放置 hadoop 宿主目录下的.ssh/authorized_keys中,
注意 authorized_keys 默认不存在需要手动创建,并且必须设置权限为 600
ssh-keygen生成密钥;-t生成密钥类型;dsa为dsa密钥认证的意思,密钥类型;-P用于提示密语;-f生成密钥文件;
ssh-keygen -t rsa
cat .ssh/id_dsa.pub >> .ssh/authorized_keys
ssh –version

1.5 安装 java(建议每台机器的 JAVA_HOME 路径信息相同)此步骤所有节点都要操作
下载 jkd( http://www.oracle.com/technetwork/java/javase/downloads/index.html
下载后解压至自己指定的目录如 /usr/java








添加变量:以 root 用户  vi   /etc/profile
根据自己路径在最后添加以下三行
#jdk
export JAVA_HOME=/usr/java/jdk1.7.0_67
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
添加之后执行   sourc   /etc/profile    重新加载  建议 root 用户和 hadoop 用户都操作此步

1.6 安装基本应用程序 (此步骤要求联公网) 此步骤只需在 master 上操作
yum -y install  svn   ncurses-devel   gcc*
yum -y install lzo-devel zlib-devel autoconf    automake    libtool    cmake     openssl –devel


1.7 安装 maven
下载 apache-maven-3.1.1-bin.tar.gz
(下载地址   http://mirror.bit.edu.cn/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz  )
并解压    tar   zxvf   apache- maven- 3.2.3- bin.tar.gz
mv   apache-maven-3.2.3   maven     (改名)




注意一下 maven 存放路径,可以自定义路径 我的路径是 /home/hadoop/maven 目录下
添加变量:以 root 用户  vi   /etc/profile
根据自己路径在最后添加以下两行
export MAVEN_HOME=/home/hadoop/maven
export PATH=$PATH:$MAVEN_HOME/bin
添加之后执行  sourc   /etc/profile   重新加载

1.9 安装 protobuf(不安装,编译将无法完成)
Hadoop使用protocol buffer进行通信,需要下载和安装protobhf-2.5.0.tar.gz;由于官网已经无法下载了,可以到百度云盘下载http://pan.baidu.com/s/1pJlZubT 编译安装 protobuf
① cd protobuf - 2.5.0
② ./configure
③ make
④ make install
检测 protoc –version 二、编译安装 hadoop-2.5.1

2.1 下载 hadoop-2.5.1-src.tat.gz

Hadoop-2.2.0 源码包下载地址 http://apache.claz.org/hadoop/common/hadoop-2.5.1/
红色标志 hadoop-2.5.1- src.tar.gz 为源码包



2.2 解压hadoop-2.5.1-src.tar.gz


2.3 开始编译
执行命令   mvn clean package –Pdist,native –DskipTests –Dtar
此步骤要求逐级能访问公网,并且此步骤比较漫长,由于服务器配置和网上的不同因素,时间大致为1小时左右;
完成结果图类似如下:




编译成功后,  /hadoop-dist/target/hadoop-2.5.1.tar.gz   就是我们需要的文件了;
将编译好的  /hadoop-dist/target/hadoop-2.5.1.tar.gz  文件分别拷贝到其他节点,
并将其解压,设置其属主、属组都为Hadoop用户(路径自定义,注:所有节点Hadoop路径必须相同,我这里所有服务器节点都放在/home/hadoop







然后添加环境变量: vi /etc/profile  此步骤所有节点都要操作
添加以下两条:
#set hadoop 环境变量
export HADOOP_HOME=/root/hadoop-2.5.1         指定Hadoop安装路径
export PATH=$HADOOP_HOME/bin:$PATH
export CLASSPATH=$HADOOP_HOME/lib:$CLASSPATH
添加之后执行   sourc  /etc/profile   重新加载  建议 root 用户和 hadoop 用户都操作此步

2.4 master 操作

解压/hadoop-dist/tast/target/hadoop-2.5.1.tar.gz 到 /home/hadoop 进入配置文件目录




在这里主要修改以下几个文件:(文件内容有些参数根据自己时间情况修改)
slaves   core- site.xml   hadoop-env.sh   hdfs - site.xml
mapred-site.xml  (此文件默认不存在)  yarn-env.sh   yarn -site.xml


2.4.1 修改slaves文件,添加以下内容(目的:添加slave节点,建议写ip地址)
10.10.55.133

2.4.2 修改 core-site.xml 添加以下内容:
<configuration>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.10.55.112:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop-2.5.1/temp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>

2.4.3 修改hdfs-site.xml文件
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.10.55.112:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop-2.5.1/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop-2.5.1/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
2.4.4 修改mapred-site.xml 文件,添加如下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>10.10.55.112:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>10.10.55.112:19888</value>
</property>
</configuration>
2.4.5 修改 yarn-site.xml 文件,添加如下内容:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>10.10.55.112:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>10.10.55.112:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>10.10.55.112:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>10.10.55.112:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>10.10.55.112:8088</value>
</property>
</configuration>
2.4.6 修改hadoop-env.sh 文件
修改JAVA_HOME值( export JAVA_HOME=/usr/java/jdk.1.7.0_67
2.4.7 修改 yarn-env.sh文件
修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7.0_67)
2.4.8 传送文件至各个节点保持一致
配置文件修改完了,然后将修改后的所有文件都复制(覆盖)到各个节点 hadoop 目录下
scp hadoop-env.sh hdfs - site.xml mapred-site.xml slaves yarn-env.sh yarn -site.xml hadoop@10.10.55.133:/home/hadoop/hadoop-1.5.1/et/hadoop/
scp hadoop-env.sh hdfs- site.xml mapred-site.xml slaves yarn-env.sh yarn -site.xml hadoop@10.10.55.151:/home/hadoop/hadoop-1.5.1/et/hadoop/

三、启动Hadoop
3.1 初始化Hadoop (注意:请关闭所有节点防火墙)
切换至 hadoop 用户,进入/home/hadoop/hadoop-2.2.0/bin/下执行命令 hdfs namenode - format  进行初始化





...



初始化完之后会自动在/home/hadoop/hadoop-2.5.1/创建 dfs/name/目录
每次初始化都会对dfs进行操作,一般只要初始化一次就可以了,因为如果dfs里面有数据的话会把它给弄丢的

3.2 启动Hadoop (用 Hadoop 用户执行)注意:请关闭所有节点防火墙)
切换至/home/hadoop/hadoop-2.5.1/sbin/目录下:
3.2.1 执行脚本 ./start-dfs.sh
此时master 上会产生:(两个进程)




Slave 节点上会产:(DataNode进程) 且dfs密钥同步到slave节点上



3.2.2 执行脚本 ./start-yarn.sh (产生一个进程ResourceManager
slave节点产生NodeManger进程






四、测试
访问网页: http://10.10.55.112:8088


访问网页:http://10.10.55.112:50070










至此,hadoop 已经启动 关于 hadoop 的启动和关闭:在/home/hadoop/hadoop-2.5.1/bin 下
hdfs 命令 用来初始化
hdfs namenode -format
在/home/hadoop/hadoop-2.5.1/sbin 下
启动
start-dfs.sh #Start hadoop dfs daemons
start-yarn.sh #Start all yarn daemons. Run this on master node
关闭
stop-dfs.sh
stop-yarn.sh
另外:start-all.sh 脚本包含 start-dfs.sh 和 start -yarn.sh 两个脚本 所以启动时可以直接执行此脚本
stop-all.sh 关闭 同理

=========================================================================================

常见问题1、 slave节点DataNode 无法启动
搭建了很多次,这个问题每次都出现,所以总结了一下:

防火墙没关 解决办法:你懂得

所有节点 hosts 链表不统一,或有错误 解决办法:你懂得

查看节点日志提示namenode.rpc-address is not configured.发现node1没复制过去core-site.xml文件

因为多次 format namenode 造成 namenode 和 datanode 的 clusterID 不一致

解决方法:
方法一:更改 slave Cluster ID 与 master 相同修改每一个 datanode 上面的 CID(位于 dfs/data/current/VERSION 文件夹中) 使两 者一致方法二:删除所有节点/home/hadoop/hadoop-2.5.1/dfs/data/下 curren 目录 然后 重新 start-dfs.sh 即可
本文出自 “靠谱儿” 博客,请务必保留此出处http://liubao0312.blog.51cto.com/2213529/1557657
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: