hadoop 2.x 安装配置

  在安装Haoop的时候通常依赖一定的环境,如操作系统、JDK、SSH服务等。因此,在进行安装前,我们先进行这些环境的配置,然后安装Hadoop。Hadoop可以在单个节点上运行,使用进程模拟多台服务器。是完全分布式运行的一个特殊实例,元数据节点、数据节点、辅助元数据节点全部在一台服务器上。

主机规划

  HDP125作为Master节点,其余主机作为Slave节点。

操作系统

  Hadoop可以同时支持在Linux和Windows系统下进行安装,但是在windows系统下没有进行过大量的测试,不稳定容易出现问题。因此,我们使用Linux系统进行安装。

  在国内企业中使用最多的Linux系统是CentOS,笔者就使用CentOS的最新版6.5(写作时)进行安装。

关闭iptables

关闭正在运行的iptbables防火墙:

service iptables stop

关闭开机自动启动iptables:

chkconfig iptables off

关闭SElinux

关闭自在运行的SElinux:

setenforce 0

修改配置文件,关闭开机自己启动SElinux:

vi /etc/selinux/config

SELINUX=disabled

配置主机名和映射:

注意:主机名只能用英文字母、数字、“-”。不能使用下划线“_”,会出现问题。

映射

  Spark通过主机名来进行互相访问,通过修改/etc/hosts文件可配置本地主机名映射关系,在hosts文件中添加计算机的名称和IP的对应关系,如在本机中添加master的主机(假设IP为172.16.219.125),在末尾添加内容为: 172.16.219.125 HDP125

  所有主机都在/etc/hosts添加:

172.16.219.125  HDP125
172.16.219.126  HDP126
172.16.219.127  HDP127
172.16.219.128  HDP128

修改主机名

  修改本次运行期间的主机名:

hostname HDP125

  修改/etc/sysconfig/network文件,将主机名改为HDP125:

HOSTNAME=HDP125

  操作系统启动的时候,会读取该文件并设置主机名。因此,修改后不会立即生效。只有当系统重启后,主机名便会生效。

  在所有主机上执行上面两步,并把HDP125替换成相应主机名。

用户:

  在所有主机上添加用户:

groupadd hadoop
useradd hadoop -g hadoop

SSH无密码登录

  Master到Slaves节点需要配置SSH无密码登录。

  在Master生成公私钥对:

su hadoop
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

  在其它主机上创建~/.ssh文件夹:

su hadoop
mkdir ~/.ssh
chmod 700 ~/.ssh

  把公钥~/.ssh/dsa.pub发送到其它主机:

scp ~/.ssh/dsa.pub hadoop@HDPXXX:~/.ssh/id_dsa.pub

  测试是否成功:

ssh HDPxxx

安装Java的JDK

  解压:

tar -zxvf jdk-7u51-linux-x64.tar.gz -C /opt
ln -s /opt/jdk1.7.0_51 /opt/jdk

  配置环境变量:

#JDK setting
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

配置文件句柄数

  修改本次运行期间的句柄数:

ulimit -n 65535

  修改操作系统重启时默认的句柄数:

  vi /etc/security/limits.conf

\*    hard    nofile   65535
\*    soft    nofile   65535

Hadoop的下载与解压

  到hadoop.apache.org上下载Hadoop的安装文件,笔者使用的是 “hadoop-2.5.1.tar.gz”。

  在发布式安装模式下,所有服务器Hadoop的安装目录需要一样。笔者安装的位置为/opt/hadoop,使用解压命令如下:

tar  -zxvf  hadoop-2.5.1.tar.gz  -C /opt/
mv /opt/hadoop-2.5.1 /opt/hadoop
chown -R hadoop:hadoop /opt/hadoop
su hadoop

配置hadoop-env.sh

  修改hadoop目录下conf/hadoop-env.sh的环境变量,在末尾添加:

export JAVA_HOME=/opt/jdk

  注:此处采用最小配置

配置core-site.xml

  修改hadoop目录下conf/core-site.xml的配置文件,在标签中添加如下内容:

<property>
    <name>fs.default.name</name>
    <value>hdfs://HDP125:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/${user.name}/tmp</value>
</property>
<property>
    <name>fs.trash.interval</name>
    <value>1440</value>
</property>

说明:

  fs.defaultDFS:设置NameNode的IP和端口

  hadoop.tmp.dir:设置Hadoop临时目录,(默认/tmp,机器重启会丢失数据!)

  fs.trash.interval:开启Hadoop回收站

配置hdfs-site.xml

  修改hadoop目录下conf/hdfs-site.xml的配置文件,在标签中添加如下内容:

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/${user.name}/dfs_name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/${user.name}/dfs_data</value>
</property>
<property>
        <name>dfs.support.append</name>
        <value>true</value>
</property>
<property>
        <name>dfs.datanode.max.xcievers</name>
        <value>4096</value>
</property>

说明:

  dfs.replication:文件复本数

  dfs.namenode.name.dir:设置NameNode存储元数据(fsimage)的本地文件系统位置

  dfs.datanode.data.dir:设置DataNode存储数据的本地文件系统位置

  dfs.support.append:设置HDFS是否支持在文件末尾追加数据

  dfs.datanode.max.xcievers:设置datanode可以创建的最大xcievers数

配置yarn-site.xml

  修改hadoop目录下etc/hadoop/yarn-site.xml的配置文件,在标签中添加如下内容:

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>master</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
  <name>yarn.timeline-service.hostname</name>
  <value>master</value>
</property>

注:属性名为mapred.job.tracker来配置job tracker交互端口

配置mapred-site.xml

  修改hadoop目录下etc/hadoop/mapred-site.xml的配置文件,在标签中添加如下内容:

<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

配置子节点:

  修改hadoop目录etc/hadoop/slave文件,每行一个节点,伪分布式修改内容为:

HDP126
HDP127
HDP128

把配置好的Hadoop程序复制到其它节点

scp -r /opt/hadoop root@HDP126:/opt/
chown -R hadoop:hadoop /opt/hadoop

启动

格式化

  第一次使用一个分布式文件系统,需要对其进行格式化:

./bin/hadoop namenode –format

启动Hadoop守护进程:

./sbin/start-all.sh

  Hadoop守护进程的日志写入到${HADOOP_LOG_DIR}目录(默认为logs下)。

停止Hadoop守护进程:

sbin/stop-all.sh

验证集群

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar randomwriter out

Hadoop自带的WEB管理界面

  浏览NameNode和JobTracker的WEB管理界面,它们的地址默认为:

  NameNode - http://HDP125:50070/dfshealth.jsp

  Yarn - http://HDP125:8088