Linux第5课:安装Hbase数据库(一)

Linux第5课:安装Hbase数据库(一)

时间 2019-03-05 下午3:30

主讲 张春志

地点 四楼电教室


一、Hbase数据库简介

HBase,即,Hadoop database,是一个基于hadoop的,分布式的、面向列、可伸缩的开源数据库,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

与Oracle相比,HBase擅长于存储结构简单的海量数据但索引能力有限,而Oracle等传统关系型数据库(RDBMS)能够提供丰富的查询能力,但却疲于应对TB级别的海量数据存储,HBase对传统的RDBMS(关系型数据库管理系统)并不是取代关系,而是一种补充。

由于Hbase是基于Hadoop的,所以在安装Hbase数据库之前,需要先安装Hadoop系统。

二、安装Hadoop系统

Hadoop部署模式有4种:本地模式、伪分布模式、完全分布式模式、HA(高可用)完全分布式模式。

为熟悉Habse数据库,以下,以本地模式为例,在Centos7系统下部署Hadoop。

1,安装Java 1.7.0

由于hadoop是用java编写的,所以要先部署java环境。

yum    -y    install     java-1.7.0-openjdk       java-1.7.0-openjdk-devel

安装完成后,检查java版本

java -version

2,下载hadoop 2.7.7

如无wget下载工具,需要先yum install wget

cd   /usr/local/

wget    http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

将hadoop安装包下载到了/usr/local/目录

解压到当前目录:

tar  zxvf  hadoop-2.7.7.tar.gz

3,配置环境变量

目前,hadoop的路径为:/usr/local/hadoop-2.7.7/

java的路径为:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64/

(注:java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64,这个文件夹名经常会变,以实际为主)

以上两个目录,分别cd一下,看能不能进去。

vim /etc/profile

把以下两行加入文本末尾:

export PATH=/usr/local/hadoop-2.7.7/bin:$PATH

export JAVA_HOME=/usr/lib/java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64

保存后使其生效:

source /etc/profile

继续设置:

vim /usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

文末加入:

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64

export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.7/etc/hadoop/

source /usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

4,文件配置

vim /usr/local/hadoop-2.7.7/etc/hadoop/core-site.xml

   

        fs.defaultFS

        hdfs://localhost:9000

   

vim /usr/local/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

   

        dfs.replication

        1

   

格式化文件系统:

hdfs namenode -format

5,设置SSH免密码登陆:

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

6、启动HDFS

/usr/local/hadoop-2.7.7/sbin/start-dfs.sh  启动

注:系统重启后,hdfs需要手动启动。

/usr/local/hadoop-2.7.7/sbin/stop-dfs.sh  停止

jps 显示当前所有的java进程

Linux第5课:安装Hbase数据库(一)_第1张图片

http://localhost:50070,本机已经可以访问,但其他机器无法访问。

关闭防火墙,发现其他机器也可以访问了。

(关闭新节点防火墙,因为Hadoop集群是在内网环境运行,可以关闭防火墙。)

Linux第5课:安装Hbase数据库(一)_第2张图片

8,修改默认50070端口号:

vim /usr/local/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

   

        dfs.replication

        1

        dfs.http.address

        10.0.11.5:8889

   

修改后重启hdfs生效。该网址,称为:NameNode web管理

9,hdfs的使用

HDFS,即Hadoop Distributed File System ,Hadoop分布式文件系统。它其实是将一个大文件分成若干块保存在不同服务器的多个节点中。通过联网让用户感觉像是在本地一样查看文件,为了降低文件丢失造成的错误,它会为每个小文件复制多个副本(默认为三个),以此来实现多机器上的多用户分享文件和存储空间。

HDFS特点:

① 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存3份。

② 运行在廉价的机器上。

③ 适合大数据的处理。因为小文件也占用一个块,小文件越多(1000个1k文件)块越多,NameNode压力越大。

块大小:Hadoop1版本里默认为64M,Hadoop2版本里默认为128M

HDFS基本结构分NameNode、SecondaryNameNode、DataNode

NameNode(主节点):是Master节点,有点类似Linux里的根目录。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;

SecondaryNameNode(次节点):保存着NameNode的部分信息(不是全部信息NameNode宕掉之后恢复数据用),是NameNode的冷备份;合并fsimage和edits然后再发给namenode。(防止edits过大的一种解决方案)

DataNode(数据节点):负责存储client发来的数据块block;执行数据块的读写操作。是NameNode的组成部分。

HDFS命令:

hadoop fs命令可以用于HDFS、Local FS等不同的文件系统。而hdfs dfs命令只用于HDFS文件系统

列出文件目录:

hadoop fs -ls /   注意后面的/

添加文件夹:

hadoop fs -mkdir /abc     注意前面必须加/

上传文件:

hadoop fs -put a.txt /abc    将本地的a.txt文件上传到hdfs目录下的/abc

下载文件:(get是put的逆操作)

hadoop fs -get /abc/a.txt   下载到当前目录

删除文件或非空文件夹:

hadoop fs -rm /demo1/abc.txt    递归删除-rmr可删除有文件的目录

清空回收站:

hadoop fs -expunge

查看文件大小:

hadoop fs -du -h /abc


附1:如何修改默认文件路径

hdfs通过上述操作后,已经建立。但是,文件存在哪里呢?假如,我们有两块硬盘,可不可以存在第二块上呢?解决这个问题,就要修改默认文件路径。

首先,我们来看默认存放路径:

vim /usr/local/hadoop-2.7.7/share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

file://${hadoop.tmp.dir}/dfs/name

file://${hadoop.tmp.dir}/dfs/data

file://${hadoop.tmp.dir}/dfs/namesecondary

这里,{hadoop.tmp.dir}指的是:/tmp/hadoop-root/dfs

再看看文件系统容量和使用情况:

hdfs dfsadmin -report

Linux第5课:安装Hbase数据库(一)_第3张图片
修改前

方法如下:

1,在hadoop-2.7.7目录下新建目录data,把vdb5挂载到/usr/local/hadoop-2.7.7/data目录,操作方法见第2课。

2,接下来,我们修改{hadoop.tmp.dir}所对应的新路径。

vim /usr/local/hadoop-2.7.7/etc/hadoop/core-site.xml

                hadoop.tmp.dir

                /usr/local/hadoop-2.7.7/data

                A base for other temporary directories.

3,依次:停止》格式化》启动

/usr/local/hadoop-2.7.7/sbin/stop-dfs.sh  停止

hdfs namenode -format 格式化

(格式化后,会出现dfs文件夹,下有name一个文件夹)

/usr/local/hadoop-2.7.7/sbin/start-dfs.sh  启动

(启动后,在dfs文件夹下,会出现name,data,namesecondary三个文件夹)

hadoop dfsadmin -report 结果如下:

Linux第5课:安装Hbase数据库(一)_第4张图片

成功!


附2:添加子节点(以1主2从为例)

hadoop装在一台计算机上,称为伪分布式。真正的分布式,必须运行在多台计算机上。下面,为hadoop添加2个子节点。

1,配置环境(子节点相同)

(1)安装与master和其他slave相同的java环境,jdk版本要相同。

yum    -y    install     java-1.7.0-openjdk       java-1.7.0-openjdk-devel

(2)修改新节点的ip和主机名对应关系,修改/etc/hosts配置文件,定义ip与hostname的映射。

/etc/hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件

vim /etc/hosts

末尾加入:

10.0.11.5 hadoop1

10.0.11.7  hadoop2

10.0.11.8  hadoop3

(3)关闭新节点防火墙,因为Hadoop集群是在内网环境运行,可以关闭防火墙。

(4)配置所有节点之间,两两免密码登陆。详见:关于SSH远程登陆

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh-copy-id  -i /root/.ssh/id_rsa.pub root@hadoop2

关闭SELinux (安全):

vim /etc/sysconfig/selinux 

设置:SELINUX=disabled  (原:SELINUX=enforcing)

2,修改masters和slaves配置:

列出所有的子节点的列表(IP或别名)

vim /usr/local/hadoop-2.7.7/etc/hadoop/slaves

hadoop2

hadoop3

vim /usr/local/hadoop-2.7.7/etc/hadoop/masters

hadoop1

3,复制hadoop文件夹到子节点

将master的hadoop目录,复制到子节点相应路径:

cd  /usr/local

scp -r hadoop-2.7.7 root@hadoop2:/usr/local

4,修改子节点的配置

修改相应配置,使子节点可单独启动。

5,四个xml文件配置

(1)core-site.xml

vim /usr/local/hadoop-2.7.7/etc/hadoop/core-site.xml

        fs.defaultFS

        hdfs://hadoop1:9000/

        默认的HDFS端口,用于NameNode与DataNode之间到的通讯,IP为NameNode的地址

   

hadoop.tmp.dir

/usr/local/hadoop-2.7.7/data

  存放hadoop文件系统依赖的基本配置

(2) hdfs-site.xml

vim /usr/local/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

dfs.replication

2

dfs.namenode.name.dir

/usr/local/hadoop-2.7.7/data/hdfs/name

dfs.datanode.data.dir

/usr/local/hadoop-2.7.7/data/hdfs/data

dfs.namenode.secondary.http-address

hadoop1:9001

(3) mapred-site.xml

vim /usr/local/hadoop-2.7.7/etc/hadoop/mapred-site.xml

mapreduce.framework.name

yarn

(4)yarn-site.xml

vim /usr/local/hadoop-2.7.7/etc/hadoop/yarn-site.xml

yarn.resourcemanager.hostname

hadoop1

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.log-aggregation-enable

true

yarn.log-aggregation.retain-seconds

604800

以上四个文件,分别同步到hadoop2和hadoop3

5.集群启动

hdfs namenode -format  格式化

/usr/local/hadoop-2.7.7/sbin/start-all.sh  集群启动,某个节点掉线后,开机后再运行一次即可。

/usr/local/hadoop-2.7.7/sbin/stop-all.sh   集群停止

相关命令:

hadoop dfsadmin -refreshNodes   刷新NameNode

/usr/local/hadoop-2.7.7/sbin/start-balancer.sh   负载均衡


执行集群启动后,启动正常。用JPS查看,结果如下:

hadoop1:

1,NameNode

2,SecondaryNameNode

3,Resource Manager 资源管理

hadoop2和hadoop3:

1, DataNode

2,Node Manager

访问10.0.11.5:50070:

Linux第5课:安装Hbase数据库(一)_第5张图片

访问10.0.11.5:8088:

Linux第5课:安装Hbase数据库(一)_第6张图片

成功!期间,由于四个xml文件在不同版本下的表述不同,浪费了不少时间。


涉及单词:

node 节点

core 核心

Distributed 分布式的

expunge 消除

你可能感兴趣的:(Linux第5课:安装Hbase数据库(一))