【Hadoop】34-集群的构建和安装

本节介绍如何在Unix操作系统下使用Apache Hadoop分发包安装和配置一个基础的Hadoop集群。同时也介绍一些在安装Hadoop过程中需要仔细思考的背景知识。对于产品安装,大部分用户和操作者应该考虑使用本章开始部分列举的Hadoop集群管理工具。

1、安装Java

Hadoop在Unix和Windows操作系统上都可以运行,但都需要安装Javao对于产品安装,应该选择一个经过Hadoop产品供应商认证的,操作系统、Java和Hadoop的组合。

2、创建lJnix用户账号

最好创建特定的Unix用户帐号以区分各Hadoop进程,及区分同一机器上的其他服务。HDFS,MapReduce和YARN服务通常作为独立的用户运行,分别命名为hdfs,mapred和yarn。它们都属于同一hadoop组。

3、安装Hadoop

从Apache Hadoop的发布页面下载Hadoop发布包,并在某一本地目录解压缩,例如/usr/local(/opt是另一标准选项)。注意,鉴于hadoop用户的home目录可能挂载在NFS上,Hadoop系统最好不要安装在该目录上:

%cd /usr/local
%sudo tar xzf hadoop-x.y.z.tar.gz

此外,还需将Hadoop文件的拥有者改为hadoop用户和组:

%sudo chown -R hadoop:hadoop hadoop-x.y.z

在shell路径里添加Hadoop执行程序所在目录很方便:
%export HADOOP_HOME=/usr/local/hadoop-x.y.z
%export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


4、SSH配置

Hadoop控制脚本(并非守护进程)依赖SSH来执行针对整个集群的操作。例如,某个脚本能够终止并重启集群中的所有守护进程。值得注意的是,控制脚本并非唯一途径,用户也可以利用其他方法执行集群范围的操作,例如,分布式shell或专门的Hadoop管理应用)。
为了支持无缝式工作,SSH安装好之后,需要允许来自集群内机器的hdfs用户和yarn用户能够无需密码即可登陆。最简单的方法是创建一个公钥/私钥对,存放在NFS之中,让整个集群共享该密钥对。
首先,键人以下指令来产生一个RSA密钥对。你需要做两次,一次以hdfs用户身份,一次以yarn用户身份:
%ssh-keygen -t rsa -f ~/.ssh/id_rsa
尽管期望无密码录,但密钥并不是一个好的选择(运行在本地伪分布集已保存群上时,倒也不妨使用一个空口令,参见附录A)。因此,当系统提示输人口令时,用户最好指定一个口令。可以使用“g“'以免为每个连接逐一输人密码。私钥放在由.f选项指定的文件之中,例如~/.ssh/id_rsa。存放公钥的文件名称与私钥类似,但是以“.pub”作为后缀,例如~/.ssh/id_pub。
接下来,需确保公钥存放在用户打算连接的所有机器的~/.ssh/authorized_keys文件中。
如果用户的home目录是存储在NFS文件系统中,则可以键人以下指令在整个集群内共享密钥(第一次作为hdfs用户,第二次作为yarn用户):
%cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
如果home目录并没有通过NFS共享,则需要利用其他方法共享公钥(比如ssh-copy-id)。
测试是否可以从主机器SSH到工作机器。若可以,则表明ssh-agent正在运行,再运行“乐口来存储口令。这样的话,用户即可不用再输人口令就能SSH到一台工作机器。

5、配置Hadoop

如果希望Hadoop以分布式模式在集群上运行,必须正确对其进行配置。10.3节中将详细讨论为达到此目的所需的重要配置。

6、格式化HDFS文件系统

在能够使用之前,全新的HDFS安装需要进行格式化。通过创建存储目录和初始版本的namenode持久数据结构,格式化进程将创建一个空的文件系统。由于namenode管理所有的文件系统元数据,datanode可以动态加人或离开集群,所以初始的格式化进程不涉及到datanode。同样原因,创建文件系统时也无需指定大小,这是由集群中的datanode数目决定的,在文件系统格式化之后的很长时间内都可以根据需要增加。
格式化HDFS是一个快速操作。以hdfs用户身份运行以下命令:

%hdfs namenode -format

7、启动和停止守护进程

Hadoop自带脚本,可以运行命令并在整个集群范围内启动和停止守护进程。为使用这些脚本(在目录下),需要告诉Hadoop集群中有哪些机器。文件slaves正是用于此目的,该文件包含了机器主机名或IP地址的列表,每行代表一个机器信息。文件slaves列举了可以运行datanode和节点管理器的机器。文件驻留在Hadoop配置目录下,尽管通过修改hadoop-env.sh中的HADOOP_SLAVES设置可能会将文件放在别的地方(并赋予一个别的名称)。并且,不需要将该文件分发给工作节点,因为仅有运行在namenode和资源管理器上的控制脚本使用它。
以hdfs用户身份运行以下命令可以启动HDFS守护进程:

%start-dfs.sh

namenode和辅助namenode运行所在的机器通过向Hadoop配置询问机器主机名来决定。例如,通过执行以下命令,脚本能够找到的主机名。

%hdfs getconf -namenodes

默认情况下,该命令从fs.defaultFS中找到namenode的主机名。更具体一些start-dfs.sh脚本所做的事情如下。

  1. 在每台机器上启动一个namenode,这些机器由执行hdfs getconf -namenodes得到的返回值所确定。
  2. 在slaves文件列举的每台机器上启动一个datanode。
  3. 在每台机器上启动一个辅助namenode,这些机器由执行hdfs getconf -secondarynamenodes得到的返回值所确定。

YARN守护进程以相同的方式启动,通过以yarn用户身份在托管资源管理器的机器上运行以下命令:

%start-yarn.sh

在这种情况下,资源管理器总是和start.yarn脚本运行在同一机器上。脚本明确完成以下事情。

  1. 在本地机器上启动一个资源管理器。
  2. 在slaves文件列举的每台机器上启动一个节点管理器。

同样,还提供了stop-dfs.sh和stop.yarn.sh脚本用于停止由相应的启动脚本启动的守护进程。

这些脚本实质是使用了hadoop-deamon.sh脚本(YARN中是yarn-deamon.sh脚本)启动和停止Hadoop守护进程。如果你使用了前面提到的脚本,那么你不能直接调用hadoop-deamon.sh。但是如果你需要从另一个系统或从你自己的脚本来控制Hadoop守护进程,hadoop-deamon.sh脚本是一个很好的切人点。类似的,当需要一个主机集上启动相同的守护进程时,使用hadoop-deamons.sh(带有"s”)会很方便。
最后,仅有一个MapReduce守护进程,即作业历史服务器,是以mapred用户身份用以下命令启动的:

%mr -jobhistory-daemon.sh start historyserver

8、创建用户目录

一旦建立并运行了Hadoop集群,就需要给用户提供访问手段。涉及到为每个用户创建home目录,给目录设置用户访问许可:

%hadoop fs -mkdir /user/username
%hadoop fs -chown username:username/user /user/name

此时是给目录设置空间限制的好时机。以下命令为给定的用户目录设置了1TB的容量限制:

%hdfs dfsadmin -setSpaceQuota 1t /user/username

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值