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

简介:

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

1.4 安装Hadoop

完全分布式的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。

1.4.1 准备

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

$ec2-run-instances ami-77287b32 -t m1.small -n 4 -k your-key-pair

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

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

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

1.4.2 操作步骤

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

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

hadoop@master1$ ssh-keygen -t rsa -N ""

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

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

hadoop@slave1$ mkdir ~/.ssh
hadoop@slave1$ chmod 700 ~/.ssh
hadoop@slave1$ cat >> ~/.ssh/authorized_keys

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

hadoop@slave1$ chmod 600 ~/.ssh/authorized_keys

4.从Hadoop的官方网站(http://www.apache.org/dyn/closer.cgi/hadoop/common/)获取最新、稳定且支持HBase的Hadoop版本。在写作本章时,支持HBase的Hadoop的最新稳定版本是1.0.2版。下载压缩包并将其解压到我们为Hadoop而设的root目录中,然后再添加一个符号链接和环境变量。

hadoop@master1$ ln -s hadoop-1.0.2 current
hadoop@master1$ export HADOOP_HOME=/usr/local/hadoop/current

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

hadoop@master1$ mkdir -p /usr/local/hadoop/var/dfs/name
hadoop@master1$ mkdir -p /usr/local/hadoop/var/dfs/data
hadoop@master1$ mkdir -p /usr/local/hadoop/var/dfs/namesecondary

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

hadoop@master1$ mkdir -p /usr/local/hadoop/var/mapred

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

hadoop@master1$ vi $HADOOP_HOME/conf/hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.6

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

hadoop@master1$ vi $HADOOP_HOME/conf/core-site.xml
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/var</value>
  </property>

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

hadoop@master1$ vi $HADOOP_HOME/conf/core-site.xml
  <property>
    <name>fs.default.name</name>
    <value>hdfs://master1:8020</value>
  </property>

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

hadoop@master1$ vi $HADOOP_HOME/conf/mapred-site.xml
  <property>
    <name>mapred.job.tracker</name>
    <value>master1:8021</value>
  </property>

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

hadoop@master1$ vi $HADOOP_HOME/conf/slaves
slave1
slave2
slave3

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

hadoop@master1$ rsync -avz /usr/local/hadoop/ client1:/usr/local/hadoop/
hadoop@master1$ for i in 1 2 3
  do rsync -avz /usr/local/hadoop/ slave$i:/usr/local/hadoop/
  sleep 1
done

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

hadoop@master1$ $HADOOP_HOME/bin/hadoop namenode -format

14.在主节点上启动HDFS。

hadoop@master1$ $HADOOP_HOME/bin/start-dfs.sh

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

hadoop@master1$ $HADOOP_HOME/bin/hadoop fs -ls /

你也可以通过浏览器来查看此HDFS的管理页面。请确保50070端口处于打开状态。访问http://master1:50070/dfshealth.jsp,便可看到图1-4所示的HDFS管理页面。


4

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

hadoop@master1$ $HADOOP_HOME/bin/start-mapred.sh

现在,你就可以从浏览器中访问MapReduce的管理页面了。请确保50030端口处于打开状态。访问http://master1:50030/jobtracker.jsp,便可看到图1-5所示的MapReduce管理页面。


5

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

hadoop@master1$ $HADOOP_HOME/bin/stop-dfs.sh

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

hadoop@master1$ $HADOOP_HOME/bin/stop-mapred.sh

1.4.3 运行原理

若要从主节点上启动/关闭远程从节点上的守护进程,必须用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。

相关实践学习
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
21天前
|
存储 分布式计算 Hadoop
Hadoop数据块分散存储NameNode管理
【4月更文挑战第17天】Hadoop是一个开源的分布式计算框架,依赖HDFS进行分布式存储。文件被分割成数据块分散在DataNode上,NameNode负责元数据管理和协调,确保数据可靠性。NameNode的高可用性配置能防止单点故障,保证系统稳定性。这套机制支持高效、可靠和可扩展的大数据存储与访问。
16 3
|
1天前
|
存储 分布式计算 Hadoop
【分布式计算框架】Hadoop伪分布式安装
【分布式计算框架】Hadoop伪分布式安装
6 2
|
4天前
|
分布式计算 资源调度 Hadoop
安装hadoop学习笔记
安装hadoop学习笔记
15 0
安装hadoop学习笔记
|
19天前
|
分布式计算 Hadoop Linux
找到Hadoop的安装目录
【4月更文挑战第19天】具体的安装目录可能因您的安装方式和环境而有所不同。如果您在安装Hadoop时遵循了特定的教程或文档,建议参考该教程或文档中的安装目录信息。
15 3
|
20天前
|
分布式计算 Hadoop 大数据
[大数据] mac 史上最简单 hadoop 安装过程
[大数据] mac 史上最简单 hadoop 安装过程
|
20天前
|
分布式计算 监控 Hadoop
Ganglia监控Hadoop与HBase集群
Ganglia监控Hadoop与HBase集群
|
20天前
|
存储 分布式计算 Hadoop
基于Hadoop分布式数据库HBase1.0部署及使用
基于Hadoop分布式数据库HBase1.0部署及使用
|
25天前
|
资源调度
Hadoop3的安装
Hadoop3的安装
22 0
|
5月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
87 0
|
9月前
|
SQL 分布式计算 Hadoop
Hadoop集群hbase的安装
Hadoop集群hbase的安装
147 0