大数据技术入门
上QQ阅读APP看书,第一时间看更新

3.2 安装Hadoop前的准备工作

在Hadoop集群中,大部分的机器都是作为Datanode工作的。Datanode的硬件规格推荐采用表3-1的配置:

表3-1 Datanode的硬件配置

Namenode提供整个HDFS文件系统的目录管理、块管理等所有服务,因此需要更多的内存,与集群中的数据块数量相对应,并且需要优化RAM的内存通道带宽,采用双通道或三通道以上内存。硬件规格可以采用表3-2的配置:

表3-2 Namenode的硬件配置

Secondary namenode在小型集群中可以和Namenode共用一台机器,较大的集群可以采用与Namenode相同的硬件。考虑到关键节点的容错性,建议读者购买加固的服务器来运行Namenodes和Jobtrackers,配有冗余电源和企业级RAID磁盘。最好是有一个备用机,当namenode或jobtracker其中之一突然发生故障时可以替代使用。

Hadoop集群往往需要运行几十、几百或上千个节点,构建匹配其工作负载的硬件,可以为一个运营团队节省可观的成本,因此,需要精心的策划和慎重的选择。读者需要注意的是,HDFS目前还不是一个HA(高可用性)系统,这是因为NameNode是HDFS集群中的单点失败。如果NameNode下线了,那整个HDFS文件系统就不可用。虽然我们可以在另一个单独的机器上部署第二个NameNode,但是这第二个NameNode无法做到实时的冗余性,它只是提供了一个有延时的副本。根据我们的实际经验,DataNode不需要使用RAID存储,这是因为文件数据已经在多服务器之间复制了。我们建议NameNode所在的机器应该是:

1.具有很多内存的,性能良好的服务器;内存越多,文件系统越大,块的大小可以越小;

2.尽量使用ECC RAM;

3.不要在NameNode所在的机器上安装DataNode、JobTracker或TaskTracker服务。

上面是整个硬件的一些考虑。对于软件,特别是操作系统部分,可选的Linux很多。表3-3是我们在本书中的一个选择,供读者参考。

表3-3 软件配置

HDP2.4是HortonWorks提供的Hadoop发行版,提供大数据云存储、大数据处理和分析等服务。Apache Ambari是对Hadoop进行监控、管理和生命周期管理的基于网页的开源项目。Ambari解决Hadoop生态系统部署,这是因为hadoop组件间有依赖,包括配置、版本、启动顺序、权限配置等。

3.2.1 Linux主机配置

为了方便集群中各个主机之间的通信,我们需要设置各主机IP地址。我们以两台机器为例来安装和配置Hadoop,如表3-4所示。

表3-4 主机配置

修改完成后,输入命令IP addr查看IP是否修改成功。为了方便集群中各个主机使用机器名称进行通信,我们设置主机名如下:

    hostname master                #修改主机名为master
    cat /etc/sysconfig/network        #打开网络配置文件

如果输出结果中有“HOSTNAME=master”,则修改成功。按照上面的方法修另外一个centos系统的主机名为slave01。

3.2.2 配置Java环境

Hadoop需要Java的支持,下面我们给集群中的各主机配置Java环境。

1.第一步:检查系统是否有已安装好的jdk。具体操作如下:

    rpm -qa|grep jdk     #查看已安装的jdk

如果系统已安装jdk,则需先卸载对应的jdk,命令如下:

    rpm -e --nodeps jdk-1.7.0_25-fcs.x86_64   #卸载对应的jdk

具体如下所示:

2.第二步:下载JDK

访问Java官方网站,如图3-4所示,找对图中框线的部分,下载即可。

图3-4 下载JDK

3.第三步:安装JDK

进入jdk所在目录,输入以下命令安装jdk:

    yum install  jdk-7u45-linux-x64.rpm

按照提示,按回车键,即可完成安装。

第四步:配置Java环境

    vim /etc/profile

在文件最末尾加上如下信息:

    export  JAVA_HOME=/usr/java/jdk1.7.0_45
    export  PATH=$JAVA_HOME/bin:$PATH
    export  CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

第五步:测试Java是否安装成功

输入“java –version”,如果看到屏幕上显示如下信息:

则证明安装成功。然后按照上面的方法在其他机器上安装JDK。

3.2.3 安装NTP和python

1.给集群中各主机安装NTP

NTP用来在服务器上保持时间同步。由于集群中的主机时间必须要同步,所以我们必须安装NTP并启动NTP服务,输入命令:

    yum install ntp –y
    service ntp start               #开启ntpd服务
    ntpdate asia.pool.ntp.org
    chkconfig ntpd on             #设置ntpd服务为默认启动

2.安装python

由于ambari是基于python编写的,所以我们必须给集群中各主机安装python 2.6或更高的版本。CentOS 6.5默认已安装python,我们输入以下命令查看版本是否满足要求(python2.6 or later):

    python --version          #查看python版本(python2.6 or later)

Python版本信息如图3-5所示:

图3-5 Python版本信息

3.2.4 安装和配置openssl

由于master与slave之间是通过SSH通信的,而SSH是依赖于SSL的,所以,下面我们给集群中各主机安装或升级openssl版本的方法。

1.第一步:检查openssl版本

    输入: rpm -qa | grep openssl
    结果: openssl-1.0.1e-15.el6.x86_64

2.第二步:升级openssl

上一步中如果输出的是:openssl-1.0.1e-15.x86_64 (1.0.1 build 15) ,则我们需要通过下面的命令行来升级openssl。

    yum upgrade openssl

3.第三步:检查openssl是否为最新版本(1.0.1 build 16)

    rpm -qa | grep openssl

结果应是:openssl-1.0.1e-16.el6.x86_64。

3.2.5 启动和停止特定服务

1.第一步:开启apache

我们还需要开启集群中各主机的apache http服务,输入如下命令:

    service httpd restart

2.第二步:关闭防火墙、SELinux,并统一时区

由于Hadoop有一套自身的安全机制,所以我们需要关闭集群中所有服务器的防火墙及SELinux,并统一时区。

关闭防火墙:

    chkconfig --level 35 iptables off  #终止防火墙
    service iptables stop           #关闭防火墙服务

关闭SELinux:

    vi /etc/sysconfig/selinux
    SELINUX=disabled          #修改后需要重启生效。
    setenforce 0            #执行后不需要重启。

最后需要统一时间,设置Linux系统为同一个时区。

3.2.6 配置SSH无密码访问

以下操作只需在master上进行。运行本书附录上给出的auth-ssh.sh脚本即可:

    ./auth-ssh.sh

然后测试是否互通。在master上,输入“ssh slave01”。如果出现如下所示的信息,则表示master可以免密码登录slave01成功:

同样,在slave01上,输入“ssh master”,如果出现如下所示的信息,表示slave01可以免密码登录master成功: