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

2.8 Linux上安装Hadoop

在Hadoop集群中,大部分的机器都是作为DataNode(数据节点)工作的。DataNode的硬件规格推荐采用以下配置:

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

读者需要注意的是,HDFS目前还不是一个HA(高可用性)系统,这是因为NameNode是HDFS集群中的单点失败。如果NameNode下线了,那么整个HDFS文件系统就不可用了。虽然我们可以在另一个单独的机器上部署第二个NameNode,但是这第二个NameNode无法做到实时的冗余性,它只是提供了一个有延时的副本。根据我们的实际经验,DataNode不需要使用RAID存储,这是因为文件数据已经在多服务器之间复制了。我们建议NameNode所在的机器应该是:

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

(2)尽量使用ECC RAM(即具有ECC校验的内存)。

(3)不要在NameNode所在的机器上安装DataNode(数据节点)。

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

为了方便集群中各个主机之间的通信,需要设置各主机的IP地址。下面以两台机器为例来安装和配置Hadoop。

修改完成后,输入命令“ip addr”,查看IP是否修改成功。为了方便集群中各个主机使用机器名称进行通信,我们在/etc/hosts中设置主机名和IP地址的映射,并在/etc/sysconfig/ntework中设置HOSTNAME为master。执行下面命令:

     cat /etc/sysconfig/network     #打开网络配置文件

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

2.8.1 配置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-13所示。

图2-13 下载系统原有的JDK

2.第二步:下载JDK

访问Java官方网站,如图2-14所示,找到图中红框的部分,单击下载即可。

图2-14 下载JDK

3.第三步:安装JDK

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

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

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

4.第四步:配置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
5.第五步:测试Java是否安装成功

输入“java –version”,则可以看到如图2-15所示的信息。

图2-15 查看Java是否安装成功

如果看到对应的Java版本信息,则表明安装成功。然后按照上面的方法在其他机器上安装JDK。

2.8.2 安装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)由于Ambari是基于Python编写的,因此必须给集群中的各个主机安装Python 2.6或更新版本:

CentOS 6.5默认已安装Python,输入以下命令可以查看版本是否满足要求(Python 2.6或更新版本):

     python --version          #查看python版本(Python 2.6.6或更新版本)

如图2-16所示。

图2-16 Python版本信息

2.8.3 安装和配置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。

2.8.4 配置SSH无密码访问

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

     ./auth-ssh.sh

然后测试是否互通。在master上,输入“ssh slave01”。如果出现如图2-17所示的结果,就表示master可以免密码登录slave01。

图2-17 免密码登录slave01

同样,在slave01上,输入“ssh master”,如果出现如图2-18所示的结果,就表示slave01可以免密码登录master成功。

图2-18 免密码登录master

2.8.5 安装Ambari和HDP

HDP是HortonWorks提供的Hadoop发行版。Apache Ambari是一种基于Web的Hadoop管理工具,可以快捷地监控、部署、管理Hadoop集群。这是因为Hadoop组件间有依赖关系,包括配置、版本、启动顺序、权限配置等。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、HBase、ZooKeeper、Sqoop和HCatalog等。Ambari可以帮助Hadoop系统管理员完成如下工作:

· 通过一步一步的安装向导简化了集群的安装和配置。

· 集中管理(包括启动、停止和重新配置)集群上的Hadoop服务。

· 预先配置好关键的运维指标,可以直接查看Hadoop Core(HDFS和MapReduce)及相关项目(如HBase、Hive和HCatalog)是否健康。

· 支持作业与任务执行的可视化与分析,能够更好地查看依赖和性能。

· 通过一个完整的RESTful API把监控和管理功能嵌入到自己的应用系统中。

· 用户界面非常直观,用户可以轻松有效地查看信息并控制集群。

Ambari使用Ganglia收集度量指标,用Nagios支持系统报警,当需要引起管理员的关注时(例如节点停机或磁盘剩余空间不足等问题),系统将向其发送邮件。此外,Ambari能够安装安全的(基于Kerberos)Hadoop集群,以此实现了对Hadoop安全的支持,提供了基于角色的用户认证、授权和审计功能,并为用户管理集成了LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)和Active Directory(活动目录)。

1.安装前准备工作

虽然Ambari和HDP提供了在线安装,但是因为安装文件很大,所以,我们建议先下载安装文件,然后离线安装。当安装文件下载后,我们将这些压缩包的文件解压到/var/www/html中。为了方便管理,我们建议在该目录下创建一个hdp目录,将这些安装包都放在这个目录中。我们使用tar命令解压缩:

     mkdir -p /var/www/html/hdp
     tar -xvf ./HDP-2.3.0.0-centos6-rpm.tar.gz -C /var/www/html/hdp/
     tar -xvf ./HDP-UTILS-1.1.0.20-centos6.tar.gz -C /var/www/html/hdp/
     tar -xvf ./ambari-2.1.0-centos6.tar.gz -C /var/www/html/hdp/

之后,在/etc/yum.repos.d创建三个repo文件。

注意

请复制以下baseurl的链接地址到浏览器中,查看是否能打开。如果不能打开,则需要找到对应的文件地址,对repo文件的baseurl进行修改。

     ambari.repo
     [ambari-2.1.0]
     name= ambari-2.1.0
     baseurl=http://192.168.0.110/hdp/ambari-2.1.0/centos6/
     enabled=1
     priority=1

     hdp.repo
     [HDP-2.3.0.0]
     name=Hortonworks Data Platform Version - HDP-2.3.0.0
     baseurl= http://192.168.0.110/hdp/hdp/centos6/2.x/GA/2.3.0.0
     enabled=1
     priority=1

     hdp-util.repo
     [HDP-UTILS-1.1.0.20]
     name=Hortonworks Data Platform Version - HDP-UTILS-1.1.0.20
     baseurl= http://192.168.0.110/hdp/hdp-util/repos/centos6
     enabled=1
     priority=1

之后,将写好的文件,发送至其他节点上:

     scp ambari.repo slave01:/etc/yum.repo.d/
     scp hdp.repo slave01:/etc/yum.repo.d/
     scp hdp-util.repo slave01:/etc/yum.repo.d/
2.安装Ambari

(1)将repo文件发送至各节点后,在各节点需要执行“yum clean all”命令以清空缓存文件,为了检验文件是否配置正确,可以执行yum search ambari-agent,yum search Oozie,yum search gangli命令。如果配置有问题,就会出现找不到文件包的问题。

(2)在主节点执行:

     yum install ambari-server

在所有节点上执行:

     yum install ambari-agent

“yum”是一个在Shell上使用的软件包管理器。

(3)在主节点上,执行以下命令来启动Ambari服务器:

     ambari-server start

在所有节点上,执行命令来启动Ambari代理程序:

     ambari-agent start

在所有节点上,修改/etc/ambari-agent/conf/ambari-agent.ini文件:

     vi /etc/ambari-agent/conf/ambari-agent.ini

     [server]
     hostname=master   #注意:hostname为主节点的主机名

(4)打开浏览器,输入地址:http://master:8080,出现Ambari的登录界面,登录的用户名和密码为:

用户名:admin

密码:admin

3.安装和配置HDP

登录Ambari后,使用配置向导,这时就可以按照自己的需要进行HDP的安装和配置了。具体步骤如下:

步骤01 选择版本,如图2-19所示。

图2-19 选择安装版本

对于OS选项,只选择redhat6这一栏。我们推荐使用本地安装,因此在这里需要修改对应的yum源地址。我们将后面的Base URL改为如下地址:

     Hdp-2.3.0:http://192.168.0.110/hdp/hdp/centos6/2.x/GA/2.3.0.0
     Hdp-util:http://192.168.0.110/hdp/hdp-util/repos/centos6

注意

请直接把地址复制到浏览器中,检查一下是否可以访问。

步骤02 单击Next按钮,在Install Options窗口中设置SSH密钥,如图2-20所示。

图2-20 设置SSH密钥

我们可以通过下面的方法获得SSH private key(私有密钥):

     cd ~/.ssh            #进入ssh目录
     cat id_rsa           #获取SSH private key内容

然后把上述命令的输出复制结果到Install Options窗口中。

步骤03 在“Confirm Hosts”中确认主机节点,然后单击Next按钮。

步骤04 在“Choose Services”窗口确认安装的服务,选择默认值即可,如图2-21所示。

图2-21 选择安装组件

步骤05 在“Assign Masters”窗口确认安装的Master的服务,选择默认值即可。

步骤06 在“Assign Slaves and Clients”窗口确认安装的Slave的服务,选择默认值即可。

步骤07 最后确认安装的服务版本,就可以开始实际的安装过程。

步骤08 安装结束后,安装程序会给出汇总信息。

步骤09 安装成功后的界面如图2-22所示。

图2-22 启动HDP

在Hadoop安装好之后,就可以启动Hadoop相关服务,然后尝试使用这些服务。

2.8.6 启动和停止服务

(1)进入Ambari后,可以看到如图2-23所示的界面。左侧是HDP包含的所有组件,如果组件左侧显示为绿色“√”号,就表示成功启动。

图2-23 Ambari界面

(2)以HDFS服务为例,单击右上角,选择对应的选项,即可启动或停止服务,如图2-24所示。

图2-24 HDFS管理

输入http://localhost:9870查看HDFS情况。我们对HDFS做一些简单的测试操作:首先查看HDFS状态,查看有哪些DataNode,以及各个DataNode的情况。输入以下命令:

     sudo -u hdfs hdfs dfsadmin –report

上面的“sudo -u hdfs“命令用于切换到hdfs用户,其中的dfsadmin表示运行一个HDFS的dfsadmin客户端,它的参数–report用来报告文件系统的基本信息和统计信息,如图2-25所示。

图2-25 显示HDFS状态

下面在HDFS上创建一个文件夹,输入命令:

     hadoop fs -mkdir /tmp/input

并将本地文件input1.txt传到hdfs的/tmp/input目录下:

     hadoop fs -put '/root/Desktop/input1.txt' /tmp/input

然后查看hdfs上的文件,验证各节点的input1.txt是否上传成功:

     hadoop fs -ls /tmp/input

结果如图2-26所示。

图2-26 文件操作

读者可以在HDFS上执行如下更多的命令:

     hadoop fs -get  input1.txt /tmp/input/input1.txt  #把HDFS文件拉到本地
     hadoop fs -cat /tmp/input/input1.txt  #查看HDFS上的文件