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

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://localhost:9000</value>

    </property>

</configuration>

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

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

</configuration>

格式化文件系统:

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进程

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

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

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

8,修改默认50070端口号:

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

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

        <name>dfs.http.address</name>

        <value>10.0.11.5:8889</value>

    </property>

</configuration>

修改后重启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

修改前

方法如下:

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

<property>

                <name>hadoop.tmp.dir</name>

                <value>/usr/local/hadoop-2.7.7/data</value>

                <description>A base for other temporary directories.</description>

</property>

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 结果如下:

成功!


附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

<configuration>

<property>

        <name>fs.defaultFS</name>

        <value>hdfs://hadoop1:9000/</value>

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

    </property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop-2.7.7/data</value>

  <description>存放hadoop文件系统依赖的基本配置</description>

</property>

</configuration>

(2) hdfs-site.xml

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

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>/usr/local/hadoop-2.7.7/data/hdfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/usr/local/hadoop-2.7.7/data/hdfs/data</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hadoop1:9001</value>

</property>

</configuration>

(3) mapred-site.xml

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

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

(4)yarn-site.xml

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

<configuration>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop1</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>604800</value>

</property>

</configuration>

以上四个文件,分别同步到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:

访问10.0.11.5:8088:

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


涉及单词:

node 节点

core 核心

Distributed 分布式的

expunge 消除

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容