HBase-完全分布式

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。接下来记录一下HBase的安装和一些基本的使用:

实际上,你需要一个完全分布式的配置来全面测试HBase,并将其用于实际场景中。在分布式配置中,集群包含多个节点,每个节点运行一个或者多个HBase守护进程。这些主要和备份HMaster,多个Zookeeper节点和多个RegionServer节点。此完全分布式将两个以上的节点添加到你的集群中,架构如下:

节点名称MasterZookeeperRegionServer
master 192.168.0.156
slove1 192.168.0.180备份
slove2 192.168.0.181

建议:下面操作请切换到root账户进行操作

安装JDK

安装JDK具体操作,请点击链接

配置主机名

1、登录到192.168.0.156主机,切换到root用户,执行hostname master命令,将其主机名设置为master
2、登录到192.168.0.180主机,切换到root用户,执行hostname slove1命令,将其主机名设置为slove1
3、登录到192.168.0.181主机,切换到root用户,执行hostname slove2命令,将其主机名设置为slove2
4、打开各个主机的/etc/hosts文件,添加如下内容:

192.168.0.156   master
192.168.0.180   slove1
192.168.0.181   slove2

重启后生效

配置免密码登录

SSH设置需要在集群上执行不同的操作,如启动,停止和分布式守护shell操作。进行身份验证不同的Hadoop用户,需要一种用于Hadoop的用户提供的公钥/私钥对,并用不同的用户共享。以下的命令被用于生成秘钥值对:

1、在各个主机上执行如下命令:

ssh-keygen -t rsa
cat id_rsa.pub >> /root/.ssh/authorized_keys

2、将master主机上的id_rsa.pub文件分别拷贝到slove1slove2主机上,在slove1slove2主机上使用如下命令将其内容追加到authorized_keys文件末尾:

# 注意是“>>”,“>”将会被覆盖
cat id_rsa.pub >> /root/.ssh/authorized_keys

3、将slove1id_rsa.pub文件内容追加到masterslove2主机上的authorized_keys文件末尾,再将slove2id_rsa.pub文件内容追加到masterslove1主机上的authorized_keys文件末尾
4、使用如下命令进行验证,验证各个主机之间是否已经不需要密码连接了:

ssh 主机名

注意:如果有提示输入密码,请查看authorized_keys文件是否有追加错误!!

安装配置Hadoop

1、从官网下在相应版本的安装包,这里我下载的是2.9.0版本
2、解压

tar -zxvf hadoop-2.9.0.tar.gz

3、移动至/usr/local/hadoop目录当中

mv hadoop-2.9.0 /usr/local/hadoop

4、配置环境变量,使用vi编辑器打开/etc/profile文件,添加如下代码:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

应用刚刚配置的环境变量:

source /etc/profile

5、进入$HADOOP_HOME/etc/hadoop目录当中,使用vi编辑器,打开hadoop-env.sh文件,修改Java环境变量JAVA_HOME的值,并且修改进程文件的存放目录:

export JAVA_HOME=/usr/local/jdk1.8.0_151

6、修改core-site.xmlcore-site.xml包含用于Hadoop的实例,分配给文件系统,存储器限制用于存储数据和读/写缓冲器大小的信息。使用vi编辑器,打开core-site.xml,并且在<configuration></configuration>标签之间添加如下属性:

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>

8、修改hdfs-site.xmlhdfs-site.xml包含复制数据的值,NameNode的路径,本地文件系统,要存储Hadoop基础架构的Datanode路径的信息。使用vi编辑器,打开hdfs-site.xml,并且在<configuration></configuration>标签之间添加如下属性:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>file:///home/pythoner/hadoop/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>file:///home/pythoner/hadoop/hdfs/datanode</value>
    </property>
</configuration>

上面的属性值是用户自定义的,用户可以根据自己的Hadoop的基础架构进行更改。

9、修改yarn-site.xml。此文件用于配置yarn在Hadoop中。使用vi编辑器,打开yarn-site.xml,并且在<configuration></configuration>标签之间添加如下属性:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

10、修改mapred-site.xml。此文件用于指定MapReduce框架以使用。默认情况下,Hadoop包含mapred-site.xml模板,即mapred-site.xml.template文件。首先需要从模板中复制到mapred-site.xml中:

cp mapred-site.xml.template mapred-site.xml

使用vi编辑器,打开mapred-site.xml,并且在<configuration></configuration>标签之间添加如下属性:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

验证Hadoop

1、格式化文件系统,命令如下:

hdfs namenode -format

预期结果如下:

...
17/12/04 17:01:49 INFO common.Storage: Storage directory /home/pythoner/hadoop/hdfs/namenode has been successfully formatted.
17/12/04 17:01:49 INFO namenode.FSImageFormatProtobuf: Saving image file /home/pythoner/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
17/12/04 17:01:49 INFO namenode.FSImageFormatProtobuf: Image file /home/pythoner/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
17/12/04 17:01:49 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
17/12/04 17:01:49 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.0.156
************************************************************/

2、启动namenodedatanode守护进程,命令如下:

start-dfs.sh

预期结果如下:

Starting namenodes on [master]
master: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-master.out
localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-master.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-master.out

3、启动yarn守护进程,命令如下:

start-yarn.sh

预期结果如下:

starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-root-resourcemanager-master.out
localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-master.out

4、在浏览器上输入http://192.168.0.156:50070/访问Hadoop服务。注:192.168.0.156为博主Linux机器地址

5、在浏览器上输入http://192.168.0.156:8088/验证集群中的所有应用程序。注:192.168.0.156为博主Linux机器地址

安装HBase

因为各个主机上都需要安装HBase,这里先在master主机上进行配置,而后直接将整个目录文件拷贝到slove1slove2主机上

1、从官网下在相应版本的安装包,这里我下载的是1.2.6版本
2、解压

tar -zxvf hbase-1.2.6-bin.tar.gz

3、移动至/usr/local/HBase目录当中

mv hadoop-2.9.0 /usr/local/HBase

4、进入/usr/local/HBase/conf目录,使用vi编辑器,打开hbase-env.sh文件,修改Java环境变量JAVA_HOME的值和pid存放位置,并且注释相关配置:

export JAVA_HOME=/usr/local/jdk1.8.0_151
export HBASE_PID_DIR=/var/hadoop/pids

#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
#export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

5、进入/usr/local/HBase/conf目录,使用vi编辑器,打开hbase-site.xml文件。这是HBase的主要配置文件,你只需要在HBase和Zookeeper写入数据的本地文件系统上指定目录即可。将<property>标签粘贴到标签下<configuration>下:

<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
</property>
<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/pythoner/hbase/zookeeper</value>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>master,slove1,slove2</value>
</property>

6、进入master机器上HBase安装目录,进入conf目录,使用vi编辑器,打开regionservers,移除包含localhost的那行,加上slove1slove2
7、配置HBase,将slove1作为备份主控。在conf目录,创建一个名为backup-masters文件,添加slove1
8、将整个目录文件拷贝至slove1slove2主机上
9、在各个主机上确保HBase没有在任何节点中运行。使用jps命令检查,如果存在HMasterHRegionServerHQuorumpeer,请杀死它们
10、启动集群,在master的HBase中的bin目录下,使用./start-hbase.sh命令,你的输出将类似于下面的输出

root@master:/usr/local/hbase/bin# ./start-hbase.sh 
slove1: starting zookeeper, logging to /usr/local/hbase/bin/../logs/hbase-root-zookeeper-slove1.out
slove2: starting zookeeper, logging to /usr/local/hbase/bin/../logs/hbase-root-zookeeper-slove2.out
master: starting zookeeper, logging to /usr/local/hbase/bin/../logs/hbase-root-zookeeper-master.out
starting master, logging to /usr/local/hbase/bin/../logs/hbase-root-master-master.out
slove2: starting regionserver, logging to /usr/local/hbase/bin/../logs/hbase-root-regionserver-slove2.out
slove1: starting regionserver, logging to /usr/local/hbase/bin/../logs/hbase-root-regionserver-slove1.out
slove1: starting master, logging to /usr/local/hbase/bin/../logs/hbase-root-master-slove1.out

验证进程正在运行

1、masterjps输出:

20355 Jps
20071 HQuorumPeer
20137 HMaster

2、slove1jps输出:

15930 HRegionServer
16194 Jps
15838 HQuorumPeer
16010 HMaster

3、slove2jps输出:

13901 Jps
13639 HQuorumPeer
13737 HRegionServer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值