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上的文件