天天看点

《HBase管理指南》一1.4 安装Hadoop

本节书摘来异步社区《hbase管理指南》一书中的第1章,第1.4节,作者: 蒋燚峰 译者: 苏南,更多章节内容可以访问云栖社区“异步社区”公众号查看。

完全分布式的hbase要运行在hdfs之上。对于完全分布式的hbase集群来说,其主守护进程(hmaster)通常要运行在hdfs主节点所在的服务器(namenode)上,而其从守护进程(hregionserver)要运行在hdfs从节点所在的服务器(我们称之为datanode)上。

hbase并不必须使用hadoop mapreduce,所以我们也不需要启动mapreduce的守护进程。本节也会对mapreduce的安装进行介绍,因为你毕竟有可能要在hbase上运行mapreduce。对于一个小型的hadoop集群来说,我们通常会在namenode服务器上运行一个mapreduce主守护进程(jobtracker),在各datanode服务器上运行mapreduce从守护进程(tasktracker)。

本节将介绍hadoop的安装。我们将用一个主节点(master1)来运行namenode和jobtracker。另外,我们还将安装3个从节点(slave1到slave3),这三个节点将分别用来运行datanode和tasktracker。

你需要4个小ec2实例,你可以通过下面这条命令来获得4个小ec2实例。

对于所有这4个实例,必须如“1.3 amazon ec2的安装及准备”一节所述的那样进行正确的设置。除了ntp和dns的设置之外,所有服务器上还都必须安装java。

我们将使用hadoop用户来作为所有hadoop守护进程和文件的所有者。所有hadoop文件和数据都将存储在/usr/local/hadoop目录下。因此,要预先在所有服务器上添加hadoop用户并创建/usr/local/hadoop目录。

我们还要安装一个hadoop客户端节点。我们将使用前一节中已配置好的client1节点来作为客户端节点。因此,在client1上也要安装java并准备好hadoop用户和目录。

安装一个完全分布式运行的hadoop集群的步骤如下。

1.为了能ssh登录到集群的所有节点上,需要在主节点上生成hadoop用户的公共密钥。

这个命令将在主节点上为hadoop用户创建一个公共密钥:~/.ssh/id_rsa.pub。

2.在所有从节点和客户端节点中添加hadoop用户的公共密钥,以使我们可以从主节点对该节点进行ssh登录。

3.复制上一步生成的hadoop用户公共密钥的内容,将其粘贴到~/.ssh/ authorized_keys文件中。然后,使用如下命令修改该文件的权限。

5.在主节点上创建如下几个目录。

6.如果不使用mapreduce,可以跳过下面几个步骤。如果使用mapreduce,则需要为其创建一个目录。

7.在hadoop环境设置文件(hadoop-env.sh)中设置 java_home。

8.在core-site.xml中添加hadoop.tmp.dir属性。

9.在core-site.xml中添加fs.default.name属性。

10.如果你需要mapreduce,则需要在mapred-site.xml中添加mapred.job. tracker属性。

11.添加一个从服务器列表文件slaves。

12.将所有hadoop文件从主节点同步到各客户端节点和从节点上。如果不是初次安装,则不需要同步${hadoop.tmp.dir}目录。

13.在启动hadoop之前,你需要格式化namenode节点。该操作仅在初始安装时执行。

14.在主节点上启动hdfs。

15.键入如下命令可访问你的hdfs。

《HBase管理指南》一1.4 安装Hadoop

16.如果需要的话,在主节点上启动mapreduce。

《HBase管理指南》一1.4 安装Hadoop

17.若要停止hdfs,请在主节点上执行如下命令。

18.要停止mapreduce,请在主节点上执行如下命令。

若要从主节点上启动/关闭远程从节点上的守护进程,必须用hadoop用户以无密码ssh登录的方式进行操作。这便是我们在第1步中做的事情。

hbase必须运行在一个支持持久化的sync实现的特殊hdfs上。如果在不支持持久化的sync实现的hdfs上运行hbase,那么在从服务器宕机时,hbase就有可能会丢失数据。在0.20.205以后的各版本(包括我们所选择的hadoop1.0.2)中,hadoop都支持此功能。

hdfs和mapreduce要使用本地文件系统来存储它们自己的数据。我们在第3步中创建了hadoop所需要的目录,在第8步中将该路径设置在了hadoop配置文件中。

在第9至11步中,我们对hadoop进行了设置,以使它可以找到hdfs、jobtracker和从服务器。在启动hadoop之前,需要将所有hadoop目录和设置都同步到各个从服务器上。在第一次启动hadoop(hdfs)时,需要对namenode进行格式化。请注意,只需要在初始安装时做一次格式化就可以了。

执行到这一步,你就可以使用hadoop的启动/停止脚本来启动/停止hadoop了。在本例中,我们要将hdfs和mapreduce分开进行启动/停止,因为你有可能并不需要mapreduce。你也可以使用$hadoop_home/bin/start-all.sh和stop-all.sh来同时启动/停止hdfs和mapreduce。

继续阅读