《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。

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库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
相关文章
|
4月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
137 4
|
3月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
107 4
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
49 3
|
3月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
73 3
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
116 3
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
130 2
|
3月前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
76 2
|
3月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
223 6
|
3月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
100 2
|
1月前
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
70 4