美文网首页
Linux第5课:安装Hbase数据库(一)

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

作者: 启蒙时代 | 来源:发表于2019-03-04 19:12 被阅读0次

    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 消除

    相关文章

      网友评论

          本文标题:Linux第5课:安装Hbase数据库(一)

          本文链接:https://www.haomeiwen.com/subject/btqwuqtx.html