我的hadoop2.8.0安装之旅

一、概述

1.软件版本介绍

  • 主机服务器:处理器:Xeon E5620 主频:2.4GHz,内存:64G(48G可用),操作系统:Windows Server 2008 R2 SP1
  • 虚拟机:VMware Workstation 10 
  • linux版本:CentOS 7
  • JDK:jdk-8u131-linux-x64
  • hadoop:2.8.0

2.hadoop采用完全分布式方式部署,具体见下表

序号 IP地址 机器名 节点类型
1 192.168.1.52 master1 namenode
2 192.168.1.53 slave01 datanode
3 192.168.1.54 slave02 datanode

所有节点均是CentOS系统,防火墙均禁用,所有节点上均创建了一个Hadoop用户,用户主目录是/home/Hadoop。所有节点上均创建了一个目录/usr/hadoop,并且拥有者是hadoop用户。因为该目录用于安装hadoop,用户对其必须有rwx权限。(一般做法是root用户下在/usr下创建hadoop目录,并修改该目录拥有者为hadoop(chown –R Hadoop: /usr/hadoop),否则通过SSH往其他机器分发Hadoop文件会出现权限不足的提示

二、系统安装

1.安装系统,参见http://www.cnblogs.com/kxxx/p/6279298.html

2.安装完系统之后配置IP

(1)配置本机的IP,请参见 http://www.cnblogs.com/kxxx/p/6279319.html

(2)配置/etc/hosts文件

配置如下图:

此处需要配置自己和另外2台的IP地址和机器名。。注:这里有一个比较坑的地方,在后面hadoop安装好之后出现了问题。我在第一句

127.0.0.1   master1 localhost localhost.localdomain localhost4 localhost4.localdomain4  中多了红色字体的数据,引起后面datanode的2台一直连不起namenode,后续介绍。

3.禁用防火墙

systemctl stop firewalld.service 关闭防火墙

 systemctl disable firewalld.service 禁止防火墙在开机时启动

 4.设置selinux为disabled

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可。 注:一定要重启

三、安装JAVA

(1)卸载系统自带的openjdk

由于我按照的CentOS 7 默认安装了openjdk,故这里需要先卸载,具体操作步骤参见http://www.cnblogs.com/kxxx/p/7055273.html

(2)安装JDK

  请参见上面的文章一起http://www.cnblogs.com/kxxx/p/7055273.html

四、配置SSH免密码登录

我的配置过程请参见:http://www.cnblogs.com/kxxx/p/7050159.html

由于我刚刚接触到linux系统,对SSH免密登录不熟悉,中间走了很多弯路,我开始一直以为需要将公钥copy到其它机器是其它机器可以免密登录到本机器,结果我理解正好相反。比如在master1上生成key,并且将公钥拷贝到slave01上并配置slave01上的authorized_keys。我的理解是slave01可以免密登录到master1,结果和我理解的相反,正确的应该是master1免密登录到slave01上。

五、安装hadoop

1.创建hadoop用户和hadoop-user组

描述:hadoop启动全部使用hadoop用户,故先创建了hadoop用户,并且hadoop用户属于hadoop-user组

步骤:使用root用户登录,分别执行如下命令

创建用户组:groupadd hadoop-user
创建用户并分配组:useradd -g hadoop-user hadoop
修改用户密码:passwd hadoop

2.使用root用户登录,在/usr目录下创建hadoop目录,并将hadoop的拥有者变为hadoop用户

cd /usr
mkdir hadoop
chown -R hadoop:hadoop-user hadoop

3.使用SecureCRT将下载的hadoop-2.8.0.tar.gz包发送到master1中的/usr/hadoop目录下,并解压。解压后删除hadoop-2.8.0.tar.gz包。解压后在hadoop文件下将出现hadoop-2.8.0这个文件夹。

解压命令:cd /usr/hadoop

tar –xzvf hadoop-2.8.0.tar.gz 

4.处理配置文件,我参照了Apache的官方文档:http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/ClusterSetup.html

所有的配置文件都在/usr/hadoop/hadoop-2.8.0/etc/hadoop目录下。在配置时使用hadoop用户登录

4.1 配置hadoop-env.sh

  需要配置JAVA_HOME,文件中开始时值为export JAVA_HOME=${JAVA_HOME},需要改为:

  export JAVA_HOME=/usr/java/jdk1.8.0_131

4.2 配置core-site.xml,我配置如下:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master1:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/hadoop/tmp</value>
    </property>
</configuration>

4.3 配置hdfs-site.xml,这个配置文件分为namenode和datanode进行配置,namenode的配置如下(即master1上):

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.blocksize</name>
        <value>268435456</value>
    </property>
    <property>
        <name>dfs.namenode.handler.count</name>
        <value>100</value>
    </property>
</configuration>

datanode的配置如下(即slave01,slave02上):

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///usr/hadoop/dfs/data</value>
    </property>
</configuration>

4.4 配置yarn-site.xml,配置如下:

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master1</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master1:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master1:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master1:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master1:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master1:8088</value>
    </property>

</configuration>

4.5 配置mapred-site.xml,配置如下:

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

这个配置文件最开始没有,需要从mapred-site.xml.template这个文件复制过来

4.6 配置slaves,配置如下:

这个文件原值是localhost,需要改为如上图的配置.

4.7 配置yarn-env.sh,

 

5.配置完成后创建文件夹,在/usr/hadoop/目录下创建 tmp、dfs、dfs/name、dfs/data

6.启动和验证

6.1在启动前需要进行format,在master1上执行 

[hadoop@master1 ~]$ cd /usr/hadoop/hadoop-2.8.0
[hadoop@master1 hadoop-2.8.0]$ bin/hdfs namenode -format

6.2启动

先执行:sbin/start-dfs.sh

[hadoop@master1 hadoop-2.8.0]$ sbin/start-dfs.sh

再执行:sbin/start-yarn.sh

[hadoop@master1 hadoop-2.8.0]$ sbin/start-yarn.sh

至此启动完毕,

在master1上执行jps,如下图:

在slave01或slave02上执行 jps

当出现上图时表示服务启动成功.

可以在master1上通过 bin/hdfs dfsadmin -report 查看状态:

表示namenode和datanode全部正常工作

也可以通过master1上提供的服务:http://192.168.1.52:50070查看

 

六、安装后的碰到的错误

安装后datanode节点启动起来了,且配置文件全部重新核对后,datanode总是报错连接不到master1,试了很多方法都不行,最后看到这篇文章:http://www.myexception.cn/cloud/1648939.html,问题解决。

这篇文章主要是说master1上的9000端口只启动了127.0.0.1这个IP,未启动到192.168.1.52这个IP,主要是由/etc/hosts这个文件引起的。我的转发文章:http://www.cnblogs.com/kxxx/p/7070705.html

 
原文地址:https://www.cnblogs.com/kxxx/p/7069849.html