Hadoop 2.X 集群安装

使用vmware建立Hadoop 2.X集群环境,实验环境如下:

机器名    IP地址             操作系统

master    192.168.1.115     Centos x64

slave1    192.168.1.111     Centos x64

slave2    192.168.1.112     Centos x64

1、安装虚拟机。

1)安装vmware,用centos x64做一份虚拟系统,网络使用桥接方式,硬盘动态预留40G。

2)用vmware自带clone功能,克隆出两份副本。

2、关闭防火墙。

 1)关闭SELINUX,设置SELINUX=disabled,保存退出。 

vi /etc/selinux/config

 2)关闭防火墙

/sbin/service iptables stop

 永久关闭

chkconfig --level 35 iptables off

 3、配置网络。

 手动配置IP地址。

4、修改主机名和映射。

1)修改主机名:  

vi /etc/sysconfig/network

 例如:

 NETWORKING=yes
 HOSTNAME=slave2

2)修改hosts映射,添加主机映射。

vi /etc/hosts

 例如:

 192.168.1.115 master
 192.168.1.111 slave1
 192.168.1.112 slave2

 重启网络。

service network restart

 5、生成ssh免密码(用普通用户生成)

1)三台机生成密钥对。

ssh-keygen -t rsa -f ~/.ssh/id_rsa

 2)将slave1和slave2生成的公钥拷贝到master: 

scp 192.168.1.111:/home/huser/.ssh/id_rsa.pub ./slave1_rsa.pub
scp 192.168.1.112:/home/huser/.ssh/id_rsa.pub ./slave2_rsa.pub

 master上公钥往本机拷贝一份:

cp id_rsa.pub master_rsa.pub

3)3个公钥文件中的内容存放至authorized_keys,采用文本追加的方式:

cat master_rsa.pub >> authorized_keys
cat slave1_rsa.pub >> authorized_keys
cat slave2_rsa.pub >> authorized_keys

4)生成的authorized_keys需要设置权限:

chmod 600 authorized_keys 

5)authorized_keys拷贝到另外两台机器上,ssh免密码登录其他机器测试。

6、安装JAVA

1)Linux系统可能自带OpenJDK或者IBMJDK,需要卸载掉重新安装Oracle JDK。

 查看JDK信息:

rpm -qa|grep java

 卸载已经安装的JAVA,所有安装版本都卸载,直到提示找不到Java环境。

yum -y remove java-1.6.0-openjdk-1.6.0.0-3.1.13.1.el6_5.x86_64

2)在/usr下创建一个java目录,将JAVA安装包上传,解压文件

tar -xzvf jdk-7u51-linux-x64.tar.gz

3)配置JAVA环境

 先备份 cp /etc/profile /etc/profile.bak

 编辑profile

 先注释一行 

 #export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

 设置环境变量

export JAVA_HOME=/usr/java/jdk1.7.0_51
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar 
export JRE_HOME=$JAVA_HOME/jre 
export PATH=$JAVA_HOME/bin:$PATH

 保存,生效环境变量。

source /etc/profile

用java -version查看JAVA环境变量是否设置正确。

7、安装Hadoop 2.x(用普通用户安装)

1)下载hadoop-2.2.0.tar.gz,上传到/home/huser/hadoop,解压安装包。

2)修改etc/hadoop/hadoop-env.sh中的export JAVA_HOME=usr/java/jdk1.7.0_51,即前面安装的JAVA路径。

3)修改etc/hadoop/yarn-env.sh中的export JAVA_HOME=/usr/java/jdk1.7.0_51,即前面安装的JAVA路径。

4)修改etc/hadoop/slaves,添加:

slave1
slave2

 5)修改etc/hadoop/core-site.xml,在configuration下面添加:

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://master:9000</value>
</property>
<property>
  <name>io.file.buffer.size</name>
  <value>131072</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>file:/home/huser/hadoop/hadoop-2.2.0/tmp/</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>

 ##需要新建tmp文件夹,/home/huser/hadoop/hadoop-2.2.0/tmp/

6)修改etc/hadoop/hdfs-site.xml,在configuration下面添加:

<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>master:9001</value>
</property>
<property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/home/huser/hadoop/hadoop-2.2.0/name</value>
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/home/huser/hadoop/hadoop-2.2.0/data</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>
<property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
</property>

 ##需要新建name和data文件夹,/home/huser/hadoop/hadoop-2.2.0/name,/home/huser/hadoop/hadoop-2.2.0/data

7)修改etc/hadoop/mapred-site.xml,在configuration下面添加: 

<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>master:10020</value>
</property>
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>master:19888</value>
</property>

 8)修改etc/hadoop/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>master:8032</value>
</property>
<property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>master:8030</value>
</property>
<property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>master:8031</value>
</property>
<property>
  <name>yarn.resourcemanager.admin.address</name>
  <value>master:8033</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>master:8088</value>
</property>

 9)以上个别配置文件默认不存在,复制相应的template文件获取。

10)格式化节点。

./bin/hdfs namenode –format

 11)启动hdfs。

./sbin/start-dfs.sh

 出现错误报信。

14/04/19 04:27:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/huser/hadoop/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
master]
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
Server: ssh: Could not resolve hostname Server: Name or service not known
You: ssh: Could not resolve hostname You: Name or service not known
warning:: ssh: Could not resolve hostname warning:: Name or service not known

##Hadoop本身没有32位和64位区分,但JAVA本身有位数区分,引用了本地库就要注意位数,检查位数file ./libhadoop.so.1.0.0

./libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

##可以看出类库是32位,所以会报错,解决办法:

一种重新编译Hadoop,详见:http://www.cnblogs.com/guarder/p/3697636.html

二种暂时解决,修改etc/hadoop/hadoop-env.sh:

export HADOOP_COMMON_LIB_NATIVE_DIR=/home/huser/hadoop/hadoop-2.2.0/lib/native
export HADOOP_OPTS="-Djava.library.path=/home/huser/hadoop/hadoop-2.2.0/lib"

12)再次启动集群

启动hdfs: 

./sbin/start-dfs.sh

 启动yarn: 

./sbin/start-yarn.sh

 13)查看启动情况。

master上面进程:

22143 NameNode
22529 Jps
22316 SecondaryNameNode
22459 ResourceManager

slave上面进程:

21438 Jps
21341 NodeManager
原文地址:https://www.cnblogs.com/guarder/p/3676595.html