《HBase管理指南》一1.3 Amazon EC2的安装及准备

简介:

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

1.3 Amazon EC2的安装及准备

Amazon EC2(Amazon Elastic Compute Cloud)是一种可在云计算环境中提供具有可伸缩行的计算能力的Web服务。通过使用Amazon EC2,我们只需用很低的成本就可以轻松地体验到完全分布式运行的HBase的运行模式。本书中用来展示HBase各种管理操作的所有服务器都运行在Amazon EC2上。

本节将介绍如何安装Amazon EC2环境,这是在EC2上安装HBase的准备工作。我们将建立在Amazon EC2上一个名称服务器和客户端。你也可以使用其他一些托管服务(比如Rackspace)或使用一些真正的服务器来建立HBase集群。

1.3.1 准备

你需要在http://aws.amazon.com/上注册或创建一个Amazon Web Service(AWS)账户。

管理实例需要使用一些EC2命令行工具。你可以按照如下网页中的操作说明来下载并安装这些命令行工具。

http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?SettingUp_CommandLine.html

为了能够登录到EC2实例上,你需要一个公钥/私钥对。你可以使用该网页中的操作指令来生成自己的密钥对,然后将你的公共密钥上传到EC2上。

http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/generating-a-keypair.html

在你登录到一个实例上之前,你必须进行访问授权。下面这个链接中包含有如何向默认安全组添加规则的操作说明。

http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/addingsecurity-group-rules.html

在完成上述这些步骤之后,请按照下面的清单进行一下检查,以确保一切都已准备就绪。

X.509证书:检查X.509证书是否已经上传。你可以在自己帐户的Security Credentials(安全凭据)页中完成此项检查。

  • EC2密钥对:检查EC2密钥对是否已经上传。您可以在AWS Management Console | Amazon EC2 | NETWORK & SECURITY | Key Pairs中完成此项检查。
  • 访问权限:检查是否已授权可以进行访问。此项检查可在AWS Management Console | Amazon EC2 | NETWORK & SECURITY | Security Groups | Inbound中完成。
  • 环境变量设置:检查是否已完成了环境变量的设置。举例来说,下面这段代码就可以显示出我所设置的环境变量;你要确保其中所使用的EC2_URL正确地表明了你所属的地区。
$ cat ~/.bashrc
export EC2_HOME=~/opt/ec2-api-tools-1.4.4.2
export PATH=$PATH:$EC2_HOME/bin
export EC2_PRIVATE_KEY=~/.ec2/pk-OWRHNWUG7UXIOPJXLOBC5UZTQBOBCVQY.pem
export EC2_CERT=~/.ec2/cert-OWRHNWUG7UXIOPJXLOBC5UZTQBOBCVQY.pem
export JAVA_HOME=/Library/Java/Home
export EC2_URL=https://ec2.us-west-1.amazonaws.com

我们需要先通过EC2命令行工具来导入自己的EC2密钥对,然后才能管理这些EC2实例。

$ ec2-import-keypair your-key-pair-name --public-key-file ~/.ssh/id_rsa.pub

键入如下这条命令来验证设置是否正确。

$ ec2-describe-instances

如果上述这些设置都已正确完成,该命令将显示出各实例的设置信息,所显示的内容应与你在之前使用命令进行配置时的信息类似。

下载示例代码

您可以从您在http://www.packtpub.com的账户中下载到您所购买的所有Packt图书的示例代码文件。如果您是从其他地方购买的本书,您可以访问http://www.packtpub.com/support进行注册,然后我们会以电子邮件的方式直接将这些文件发送给您。

最后一项准备工作是找到一个合适的AMI。我们可以在http://wiki.debian.org/Cloud/AmazonEC2Image上找到一个已注册的Debian AMI。

如果只是为了体验一下HBase,那么使用以EBS为后端的32位AMI是最具成本效益的选择。要确保你所选择的是为你所属地区而提供的AMI。由于本书所使用的地区是US-West(us-west-1),所以对我们来说,该AMI的ID是ami-77287b32。这是一个32位的小EC2实例。小实例很便宜,因此适合用来在EC2中对HBase进行体验。如果是生产环境,建议你至少使用带EBS的高内存超大实例(High-Memory Extra Large Instance)或一个真正的服务器。

1.3.2 操作步骤

请按照以下步骤操作你的EC2实例,以便为使用HBase做好准备。我们将启动两个EC2实例,一个作为DNS/NTP服务器,另一个作为DNS/NTP客户端。

1.启动一个微实例来作为DNS/NTP服务器。本书后面的章节将一直使用ns1.hbase-admin-cookbook.com(ns1)来作为该服务器的完全限定域名(FQDN)。

$ ec2-run-instances ami-77287b32 -t t1.micro -k your-key-pair

2.启动一个小实例作为DNS/NTP客户端。本书后面的章节将一直使用client1. hbase-admin-cookbook.com(client1)作为该客户端的FQDN。

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

3.在AWS Management Console中验证这些实例是否都已启动,也可以通过键入以下命令进行验证。

$ ec2-describe-instances

在该命令的输出中,应该能够看到两个实例。从ec2-describe-instances命令的输出结果或AWS Management Console中,可以看到这些已启动实例的公网DNS。它们的DNS应该是一些格式大致为ec2-xx-xx-xxx-xx.us-west-1.compute.amazonaws. com的值(如图1-2所示)。


2

4.使用如下命令通过SSH登录实例。

$ ssh root@ec2-xx-xx-xxx-xx.us-west-1.compute.amazonaws.com

5.在为服务器安装软件包之前,先使用如下命令更新软件包索引文件。

root# apt-get update

6.使用如下命令将实例所属时区修改为你所在的时区。

root# dpkg-reconfigure tzdata

7.使用如下命令在DNS服务器上安装NTP服务器守护程序。

root@ns# apt-get install ntp ntp-server ntpdate

8.使用如下命令在客户机/服务器上安装NTP客户端。

root@client1# apt-get install ntp ntpdate

9.分别修改/etc/ntp.conf配置文件,让ns1作为NTP服务器运行,让client1作为一个以ns1为服务器的NTP客户端来运行。

因为在NTP设置中没有什么HBase特别要求的配置,所以这里就不对此进行详述了。在本书的示例源码中,可以找到服务器端和客户端不同ntp.conf文件的示范样本。

10.在ns1上安装BIND9作为DNS服务器。

root@ns# apt-get install bind9

BIND9还需要进行一下配置,以使之成为内部域名查找时的首选主服务器和外部域名查找时的缓存服务器。DNS服务器也需要进行配置,以使其他EC2实例可以更新自己在DNS服务器上的记录。

这部分内容并不属于本书所要讲述的范畴,所以我们将不对此进行详述。BIND9配置文件的样本,请参阅本书所附带的示例源码。

11.对于client1,只需配置其把ns1作为自己的DNS服务器就可以了。

root@client1# vi /etc/resolv.conf
nameserver 10.160.49.250 #private IP of ns
search hbase-admin-cookbook.com #domain name

12.自动更新DNS主机名。将客户端EC2实例的用户数据设为其主机名。打开AWS Management Console的My Instances页,在实例列表中选中client1并将其关闭,然后单击Instance Actions | View | Change User Data。在图1-3所示的弹出页面输入你想要给该实例使用的主机名(在本例中为client1)。


3

13.创建一个使用该用户数据来更新DNS服务器上该客户端的记录的脚本。

root@client1# vi ec2-hostname.sh
#!/bin/bash
#you will need to set up your DNS server to allow update from this key
DNS_KEY=/root/etc/Kuser.hbase-admin-cookbook.com.+157+44141.private
DOMAIN=hbase-admin-cookbook.com

USER_DATA='/usr/bin/curl -s http://169.254.169.254/latest/userdata'
HOSTNAME='echo $USER_DATA'
#set also the hostname to the running instance
hostname $HOSTNAME

#we only need to update for local IP
LOCIP='/usr/bin/curl -s http://169.254.169.254/latest/meta-data/local-ipv4'
cat<<EOF | /usr/bin/nsupdate -k $DNS_KEY -v
server ns.$DOMAIN
zone $DOMAIN
update delete $HOSTNAME.$DOMAIN A
update add $HOSTNAME.$DOMAIN 60 A $LOCIP
send
EOF

14.最后,在rc.local文件中添加下列脚本,以使ec2-hostname.sh可以在启动时由rc.local调用执行。

root@client1# vi /etc/rc.local
sh /root/bin/ec2-hostname.sh

1.3.3 运行原理

首先,我们启动了两个实例,一个微实例作为DNS/NTP服务器,一个小实例作为其客户端。为了能给其他实例提供名称服务,DNS名称服务器必须一直保持运行。使用微实例可以降低你的EC2成本。

在第3步中,我们设置好了NTP服务器和客户端。我们让NTP服务器与DNS服务器运行在同一个实例上,然后在其他所有实例上运行NTP客户端。

注意:

请确保HBase集群中各成员的时钟上基本一致。

EC2实例可以按需启用和关闭,并且还无需为已关闭的实例付费。但重新启动EC2实例会使实例的IP地址发生改变,这会给HBase的运行带来麻烦。我们可以运行一个DNS服务器来为HBase集群中所有EC2实例提供名称服务,这样就可以解决IP地址变化的问题。我们可以让其他EC2实例在每次重新启动时都更新一下自己在DNS服务器上的名称记录。

这就是我们在第4步和第5步中做的事情。第4步是常规的DNS设置。在第5步中,我们把实例的名称保存在了该实例的用户数据属性中,这样做的目的是:在该实例重新启动后,我们仍可以使用EC2 API来找回它的名字。此外,我们还可以通过EC2 API来获得该实例的私有IP地址。有了这些数据,我们就可以在实例每次重启时向DNS服务器发送一个DNS update命令更新该实例名称对应的IP地址。这样,我们就可以始终使用一个固定主机名来访问该实例了。

只有DNS实例需要一直保持运行。在不需要运行HBase集群时,我们可以将其他所有实例都关掉。

相关实践学习
云数据库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
相关文章
|
6月前
|
分布式计算 Hadoop Shell
93 hbase安装
93 hbase安装
51 0
|
9月前
|
SQL 分布式计算 Hadoop
Hadoop集群hbase的安装
Hadoop集群hbase的安装
147 0
|
2月前
|
存储 Java Linux
Linux安装HBase的详细教程及常用方法
Linux安装HBase的详细教程及常用方法
124 1
|
5月前
|
Shell 分布式数据库 Apache
HBase 安装
HBase 安装
46 0
|
5月前
|
SQL 分布式计算 Hadoop
Hadoop学习笔记(HDP)-Part.16 安装HBase
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
85 1
Hadoop学习笔记(HDP)-Part.16 安装HBase
|
8月前
|
Shell 分布式数据库 Hbase
Hbase shell管理操作
Hbase shell管理操作
54 0
|
9月前
|
监控 大数据 分布式数据库
|
9月前
|
存储 分布式计算 Hadoop
Hadoop之Hbase安装和配置
Hadoop之Hbase安装和配置
774 0
|
10月前
|
存储 分布式计算 Java
云计算与大数据实验七 HBase的安装与基本操作
云计算与大数据实验七 HBase的安装与基本操作
508 0
|
12月前
|
分布式计算 Hadoop Java
Hbase集群安装与常见问题解决
Hbase集群安装与常见问题解决
282 0