4、Hadoop2.x+Hbase完全分布式安装

版本兼容问题:

Hadoop完全分布式安装:

此处配置两台机器:

master    :     192.168.0.104 机器名hadoop1

slave1     :     192.168.0.105 机器名hadoop2

slave2     :     192.168.0.106 机器名hadoop3

 

zookeeper为hadoop1、hadoop2、hadoop3 (zookeeper必须配置为奇数个节点)

Zookeeper的安装见Zookeeper集群配置一节

 

 

NameNode与SecondaryNameNode的关系与备份

 

NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上:

fsimage:它是NameNode启动时对整个文件系统的快照。

edits:它是在NameNode启动后,对文件系统的改动序列。

  只有在NameNode重启时,edits才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在生产环境集群中的NameNode是很少重启的,这意味者当NameNode运行来很长时间后,edits文件会变的很大。在这种情况下就会出现下面这些问题:

edits文件会变的很大,如何去管理这个文件?

NameNode的重启会花费很长的时间,因为有很多改动要合并到fsimage文件上。

如果NameNode宕掉了,那我们就丢失了很多改动,因为此时的fsimage文件时间戳比较旧。

  因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edits文件的大小和得到一个最新的fsimage文件,这样也会减小在NameNode上的压力。而Secondary NameNode就是为了帮助解决上述问题提出的,它的职责是合并NameNode的edits到fsimage文件中。如图所示:

 

注意事项:

1. 日志文件是滚动的,一个正在写,几个已经写好的滚动;

2. checkpoint时,把正在写的滚动一下,然后把fsimage和日志文件下载到secondarynamenode上,只有第一次才会下载fsimage,这时候不会很大,以后就光下载日志文件,日志文件下载不会很大;

3. 如果namenode硬盘损坏,可以将secondarynamenode的元数据拷贝到namenode,但是secondarynamenode虽然有元数据信息,但是只能恢复大部分数据,最新更新的数据可能由于没有来得及下载到secondarynamenode,而无法全部恢复。

4.secondarynamenode虽然有元数据信息但是不能更新元数据,不能充当namenode使用。

 

 

/*************************安装前准备************************/

(1)修改主机ip

进入IP网卡目录:cd /etc/sysconfig/network-scripts/

列举所有网卡信息:ll 

修改对应网卡ip信息(列举出来的第一个网卡,此处为ifcfg-enp0s3):vim ifcfg-enp0s3

修改对应IP信息:

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

IPADDR=192.168.0.104

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

DNS1=8.8.8.8

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=enp0s3

UUID=4c6fdf84-30f6-4105-bc90-5bbedaa388fd

DEVICE=enp0s3

ONBOOT=yes

注意如果DNS1配置无效,则需要直接修改/etc/resolv.cof,添加如下:

nameserver 8.8.8.8

当然我这里配置的是8.8.8.8是因为我是链接的wifi,自动获取DNS,所以填写的一个互联网通用DNS

 

(2)修改主机名

修改主机名有两种方法:

方法一:在centos中直接使用hostnamectl命令: hostnamectl set-hostname hadoop1

方法二:直接修改/etc/hostname,清空后直接输入主机名:hadoop1

最后,重启:reboot

 

(3)设置本地时区

如果时间不与网络时间同步,可以通过ntp服务同步网络时间:

# yum install -y ntp

# ntpdate cn.pool.ntp.org 

 

由于默认的时区不是东八区,也就是不是上海时间,我们必须设置为上海时间

查看本地时间:date           发现时间不正确,时区不对

修改本地时间:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime            (注意localtime为文件)

查看本机时间:date           发现本机时间已经修正

 

(4)修改hosts域名映射

vim /etc/hosts

输入:

192.168.0.104    hadoop1

192.168.0.105    hadoop2

 

(5)安装JDK

首先,新建/home/Downloads目录,在该目录下下载jdk:

wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz?AuthParam=1529289142_b44eaf4dfce7e356ff886d30efe7aa48

重命名为 /jdk-8u171-linux-x64.tar.gz

其次,拷贝 /jdk-8u171-linux-x64.tar.gz到/opt目录: cp  /jdk-8u171-linux-x64.tar.gz /opt,并解压进去

再次,修改环境变量:vim /etc/profile,增加如下内容:

export JAVA_HOME=/opt/jdk1.8.0_171

export JRE_HOME=/opt/jdk1.8.0_171/jre

export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

最后,使得环境变量生效:source /etc/profile

验证jdk是否安装成功,在终端输入:java -version即可

 

 

/*************************Hadoop完全分布式安装************************/

注意: 

a. Hadoop要求所有机器上Hadoop的部署目录结构要求相同, 并且都有一个相同的用户名账户,

b. Hadoop安装过程中需要关闭防火墙和SElinux,否则会出现异常

 

(1)禁用防火墙和SElinux

关闭防火墙:

systemctl stop firewalld

systemctl disable firewalld

 

关闭SElinux:

vim /etc/selinux/config

修改SELINUX=disbabled

修改后,重启机器生效

 

(2)创建Hadoop用户名和组

切换到root目录,执行添加用户操作:

adduser hadoop

passwd hadoop

输入两次密码即可,默认hadoop用户所在组也是hadoop组

 

(3)ssh免秘钥登录

目的:实现某台机器上操作指令,其他所有节点同时执行(比如1到2或3都可以免密码登录,从1节点控制即可操作2和3节点)

安装ssh和rsync

yum -y install ssh

yum -y install rsync

 

说明:

     Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到 NameNode,SSH之所以能够保证安全,原因在于它采用了公钥加密:

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

 

切换到hadoop用户,在用户目录下建立.ssh文件夹

su hadoop

mkdir ~/.ssh/

 

配置hadoop1(master)机器无密码登录所有slave机器:

在master节点执行以下命令:

ssh-keygen -t rsa 一路回车

生成的密钥对:id_rsa(私钥)和id_rsa.pub(公钥),默认存储在”/home/用户名/.ssh”目录下。查看“/home/用户名/”下是否有“.ssh”文件夹,且“.ssh”文件下是否有两个刚生产的无密码密钥对(id_rsa和id_rsa.pub私钥和公钥)。

 

设置权限,否则ssh免秘钥登录无效:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/*

 

将~/.ssh/下的id_rsa.pub的公钥作为认证发放到hadoop1,hadoop2下的~/.ssh/下:

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop1

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop2

期间要求输入hadoop的用户密码回车即可。

 

测试,在hadoop1上登录其他机器都不需要密码:ssh hadoop2

如果需要密码说明文件夹权限和文件权限设置有问题,分别登录到对应机器,切换到hadoop用户下(必须创建),重新设置权限即可(见chomd 700 ~/.ssh)!

 

(4)Hadoop环境变量配置

解压hadoop安装包到/opt目录下,并使用root用户将文件夹所有者设置为hadoop

tar -zxvf hadoop-2.9.1.tar.gz

chown -R hadoop:hadoop hadoop-2.9.1

 

然后切换到root用户继续操作(否则使用hadoop用户,source命令无法执行)

 

最终配置如下:

export JAVA_HOME=/opt/jdk1.8.0_171

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

 

export HADOOP_HOME=/opt/hadoop-2.9.1

export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

 

(5)配置环境变量

配置hadoop-env.sh

修改/opt/hadoop-2.9.1/etc/hadoop/hadoop-env.sh的JAVA_HOME路径:

export JAVA_HOME=/opt/jdk1.8.0_171

注意,不能设置为默认值(无绝对路径)export JAVA_HOME=${JAVA_HOME},否则报错

 

使配置生效:

source hadoop-env.sh

 

配置yarn-env.sh

修改/opt/hadoop-2.9.1/etc/hadoop/yarn-env.sh

export JAVA_HOME=/opt/jdk1.8.0_171

 

使配置生效:

source yarn-env.sh

 

查看hadoop环境变量配置是否生效:

hadoop version

 

接下来配置一台机器,然后将配置好的机器复制到其他机器!!!

 

(5.1)配置slave信息

编辑所有的配置文件:vim /opt/hadoop/etc/hadoop/slaves

添加如下

 

注意:#如果不需要服务端做存储节点可以不添加hadoop1这台机器

 

(6)配置core-site.xml

 

切换到hadoop用户,创建hadoop临时目录:(hadoop有权限也会自动创建!)

<configuration>

        <!-- 指定hdfs的namenode在hadoop1上-hadoop的入口:hdfs为主机节点地址 -->

        <property>

                <name>fs.defaultFS</name>

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

        </property>

        <!-- Size of read/write buffer used in SequenceFiles. -->

        <property>

         <name>io.file.buffer.size</name>

         <value>131072</value>

       </property>

        <!-- 指定hadoop临时目录-是其他目录的基础目录,hadoop会自动创建 -->

        <property>

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

                <value>/home/hadoop/hadoop/tmp</value>

                <!--<value>file:/home/hadoop/hadoop/tmp</value>-->

        </property>

        <!--指定两个连续检查点之间最大的间隔时间-->

        <property>

                <name>dfs.namenode.checkpoint.period</name>

                <value>3600</value>

        </property>

</configuration>

 

(7)配置hdfs-site.xml

<configuration>

    <!--配置SecondaryNameNode的http访问地址:这里SecondaryNameNode和NameNode放在一起,实际情况最好分离-->

    <property>

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

      <value>hadoop1:50090</value>

    </property>

    <!--配置文件拷贝的副本数目,一般默认至少2个副本,hadoop默认一个文件有2个副本也就是存3份-->

    <!--两个相同的副本数不可能在同一DataNode上,副本数小于等于dataNode数,默认为3个副本-->

    <property>

      <name>dfs.replication</name>

      <value>2</value>

    </property>

    <!--元数据目录,会自动创建->

    <property>

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

      <value>file:/home/hadoop/hadoop/hdfs/name</value>

    </property>

    <!--数据目录,会自动创建-->

    <property>

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

      <value>file:/home/hadoop/hadoop/hdfs/data</value>

    </property>

    <!--设置为true,可以在浏览器中IP+port查看-->

    <property>   

   <name>dfs.webhdfs.enabled</name>

   <value>true</value>

 </property>

    <!--设置浏览器查看hdfs地址-->

    <property>   

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

   <value>hadoop1:50070</value>

 </property>

</configuration>

(8)配置yarn-site.xml

<configuration>

 

<!-- Site specific YARN configuration properties -->

<!-- Configurations for ResourceManager -->

     <!--NodeManager上运行的附属服务,用于运行mapreduce-->

     <property>

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

          <value>mapreduce_shuffle</value>

     </property>

     <!--ResourceManager 对客户端暴露的地址-->

     <property>

           <name>yarn.resourcemanager.address</name>

           <value>hadoop1:8032</value>

     </property>

     <!--ResourceManager 对ApplicationMaster暴露的地址-->

     <property>

          <name>yarn.resourcemanager.scheduler.address</name>

          <value>hadoop1:8030</value>

      </property>

     <!--ResourceManager 对NodeManager暴露的地址-->

     <property>

         <name>yarn.resourcemanager.resource-tracker.address</name>

         <value>hadoop1:8031</value>

     </property>

     <!--ResourceManager 对管理员暴露的地址-->

     <property>

         <name>yarn.resourcemanager.admin.address</name>

         <value>hadoop1:8033</value>

     </property>

     <!--ResourceManager 对外web暴露的地址,可在浏览器查看-->

     <property>

         <name>yarn.resourcemanager.webapp.address</name>

         <value>hadoop1:8088</value>

     </property>

 

(9)配置mapred-site.xml

该文件如果没做存在(默认是没有),就把mapred-site.xml.template 文件拷贝一个就可以了,编辑内容如下:

 

<configuration>

  <!--mapreduce运用了yarn框架,设置name为yarn-->

  <property>

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

    <value>yarn</value>

  </property>

  <!--查看Mapreduce作业记录-->

  <property>

          <name>mapreduce.jobhistory.address</name>

          <value>hadoop1:10020</value>

          <description>MapReduce JobHistory Server IPC host:port</description>

  </property>

  <property>

          <name>mapreduce.jobhistory.webapp.address</name>

          <value>hadoop1:19888</value>

  </property>

</configuration>

 

(10)masters配置SecondNameNode

重点:

    secondNameNode作用专门是合并日志文件,能做到部分备份的作用,所以最好不用将NameNode和SecondNameNode跑在一台机器上,如果NameNode机器发生意外会导致全部数据丢失!所以我们最好将SecondNameNode跑在其他机器上,当然如果不更改则SecondNameNode跑在NameNode机器上!具体配置如下,修改master.xml配置文件(master配置文件其实是设置SecondNameNode的并不是配置NameNode的;cor-size.xml配置NameNode,masters配置SecondaryNameNode,slaves配置从节点DataNode)

 

为了保证数据部分安全性能,我们可以将SecondaryNameNode不放在localhost中(hadoop1),否则就不需要进行如下操作!

 

问题来了,hadoop2.x之前SecondaryNameNode配置使用masters文件进行配置,而2.7以后发现etc/hadoop/masters文件已经丢弃,改用xml进行配置

 

我们也可以直接增加masters文件(虽然不存在)

vi masters

添加内容,这里我们配置SecondaryNameNode放在hadoop2上,添加内容为hadoop2即可

修改hdfs-size.xml修改SecondaryNameNode的http访问地址:

   <!--修改SecondaryNameNode地址:如果配置了SecondaryNameNode不在NameNode机器上-->

    <property>   

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

   <value>hadoop2:50090</value>

 </property>

 

(10)配置slaves文件,增加slave主机名

一般为两个副本,一行一个,这里填写DataNode即可

hadoop2

hadoop3

 

以上具体配置项目的文档参照:http://hadoop.apache.org/

其中选择对应版本文档即可:

拖拽至最下方,即可看到相关配置:

 

(12)复制hadoop配置好的包到其他linux机器

scp -r /opt/hadoop-2.9.1 hadoop2:/opt    (hadoop)

scp -r /opt/jdk1.8.0_171 hadoop2:/opt      (jdk)

scp /etc/profile hadoop2:/etc                    (环境变量-root用户才可以)

 

在其他机器分别修改权限:(用户:分组)

chown -R hadoop:hadoop /opt/hadoop-2.9.1

chown -R hadoop:hadoop /opt/jdk1.8.0_171

source /etc/profile

 

 

打开防火墙端口(一般教程都是直接关闭防火墙,如下方法是否可行待深度测试,目前搭建环境没有发现问题,看应用是否有问题):

firewall-cmd --add-port=9000/tcp --permanent

firewall-cmd --add-port=50090/tcp --permanent

firewall-cmd --add-port=8030/tcp --permanent

firewall-cmd --add-port=8031/tcp --permanent

firewall-cmd --add-port=8032/tcp --permanent

firewall-cmd --add-port=8033/tcp --permanent

firewall-cmd --add-port=8088/tcp --permanent

firewall-cmd --add-port=10020/tcp --permanent

firewall-cmd --add-port=19888/tcp --permanent

firewall-cmd --add-port=50070/tcp --permanent

firewall-cmd --add-port=50090/tcp --permanent

firewall-cmd --reload

 

9000为rpc协议,50070是http协议端口!

 

    其中50070是配置文件中没有配置的端口,是基本的web界面,能查看NameNode和DataNode信息,也可以查看HDFS中的文件!50090是SecondaryNameNode节点http页面。

 

(13)格式化HDFS文件系统(切换为普通用户hadoop)

切换用户

su hadoop

 

执行:(profile文件设置了hadoop的bin目录为path,所以环境变量生效hdfs可用,如果不可用说明PATH添加的hadoop/bin或sbin无效)

 

各个节点都执行如下命令

hdfs namenode -format

 

格式化成功会有打印:

INFO common.Storage: Storage directory /home/hadoop/hadoop/hdfs/name has been successfully formatted.

Exitting with status 0  如果 Exitting with status 1 则说明出错!

(14)启动hadoop集群

在hadoop1上执行:

./start-all.sh

 

注意: start-dfs.sh 只启动HDFS,start-all不仅启动HDFS,也启动MapReduce;

 

启动结果:

[hadoop@hadoop1 opt]$ start-all.sh

This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh

Starting namenodes on [hadoop1]

hadoop1: starting namenode, logging to /opt/hadoop-2.9.1/logs/hadoop-hadoop-namenode-hadoop1.out

hadoop2: starting datanode, logging to /opt/hadoop-2.9.1/logs/hadoop-hadoop-datanode-hadoop2.out

Starting secondary namenodes [hadoop1]

hadoop1: starting secondarynamenode, logging to /opt/hadoop-2.9.1/logs/hadoop-hadoop-secondarynamenode-hadoop1.out

starting yarn daemons

starting resourcemanager, logging to /opt/hadoop-2.9.1/logs/yarn-hadoop-resourcemanager-hadoop1.out

hadoop2: starting nodemanager, logging to /opt/hadoop-2.9.1/logs/yarn-hadoop-nodemanager-hadoop2.out

 

启动后主节点(没有dataNode是因为主节点不错副本,hadoop2和hadoop3做副本):

NameNode和SecondaryNameNode是元数据处理,主节点必备,ResourceManager是yarn资源管理

 

从节点数量:

 

运行检查(任意节点运行都可以):

hdfs dfsadmin -report

如果SecondaryNameNode不在hadoop1,我们可以测试如下:

stop-all.sh

jps

start-dfs.sh

jps

 

(14)查看集群地址状态

成功启动后,可以访问 HDFS的Web界面,查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件:

http://192.168.12.104:50070

节点信息

 

启动了YARN 可以通过 Web 界面查看任务的运行情况

在浏览器中直接输入hadoop1的集群地址: http://192.168.12.104:8088/

在这里我们可以看到hadoop的所有配置:

具体配置如下:

 

命令行查看:

jps

 

问题:解决Hadoop启动时,没有启动datanode,jps发现没有datanode线程;

原因:当我们使用hadoop namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件(这里为:/home/hadoop/hadoop/hdfs/name/current),记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致!

解决:

(1)如果dfs文件夹中没有重要的数据,那么删除dfs文件夹,再重新运行下列指令(${HADOOP_HOME}/tmp/,这里就是/home/hadoop/hadoop/tmp)

hadoop namenode -format

start-dfs.sh

 

(2)如果dfs文件中有重要的数据,那么在dfs/name目录下找到一个current/VERSION文件(/home/hadoop/hadoop/hdfs/name/current),记录clusterID并复制。然后dfs/data目录下找到一个current/VERSION文件(/home/hadoop/hadoop/hdfs/data/current),将其中clustreID的值替换成刚刚复制的clusterID的值即可

规范:

每次运行结束Hadoop后,都应该关闭Hadoop.下次想重新运行Hadoop,不用再格式化namenode,直接启动Hadoop即可

 

问题:无法启动namenode

日志:

原因:服务访问name的VERSION文件,查看发现VERSION隶属于root

解决:修改用户权限

su root

chown -R hadoop:hadoop /home/hadoop/

重启:

su hadoop

stop-all.sh

jps

start-all.sh

jps

 

日志排错:

在主节点上查看/opt/hadoop版本/logs目录下的日志文件即可!

cat /opt/hadoop-2.9.1/logs/hadoop-hadoop-datanode-hadoop2.log

 

总结,新机器或增加的机器需要做的事:

(1)修改主机ip

(2)修改主机名称

(3)修改主机hosts

(4)修改主机北京时间(先同步网络时间,然后修改本地时区/etc/localtime)

(5)新建用户、设置用户密码

(6)安装ssh、rsync、vim、lrzsz

(7)ssh免秘钥登录设置

(8)修改用户目录下的.ssh目录700和.ssh目录下所有文件权限600

(9)root更改/opt所有者

(10)环境变量配置(scp拷贝jdk和hadoop的目录--scp安全拷贝)

(11)关闭防火墙禁和SElinux

 

问题解决: unable to load native-hadoop library for you platform

解决方法:设置日志级别

export HADOOP_ROOT_LOGGER=DEBUG,console

如果只想打印错误:

export HADOOP_ROOT_LOGGER=ERROR

 

Hadoop测试

 

1、准备一个好一个文件word.txt添加内容

2、在hadoop文件系统中创建存放文件目录input

hadoop fs -mkdir /input

hadoop fs -ls /

当然如果需要删除目录,可以使用如下指令

hadoop fs -rm -r -skipTrash /目录名

 

3、使用hadoop文件系统进行上传

打开调试模式

export HADOOP_ROOT_LOGGER=DEBUG,console

hadoop fs -put word.txt /input

4、查看input目录下文件

hadoop fs -ls /

 

Hbase安装配置

(1)下载Hbase1.2.6.1稳定版本,解压到opt目录,并更改所有者为hadoop

tar -zxvf hbase-1.2.6.1.tar.gz

 

(2)配置hbase环境变量

编辑环境变量配置文件:vim /etc/profile增加如下两行:

export HBASE_HOME=/opt/hbase-1.2.6.1

export PATH=${HBASE_HOME}/bin:$PATH

使环境变量生效:

source /etc/profile

 

(3)配置hbase环境变量

编辑HBase的环境变量配置文件:vim hbase-env.sh

修改Jdk目录: 

export JAVA_HOME=/opt/jdk1.8.0_171

export HBASE_MANAGES_ZK=false   (这类使用单独的Zookeeper)

 

(4)修改HBASE配置文件

进入hbase配置文件目录:cd /opt/hbase-1.2.6.1/conf

输入:vim hbase-site.xml 根节点添加配置文件内容如下:

 

        <property>

                <!-- 端口要和Hadoop的fs.defaultFS端口一致-->

                <!-- hbase存放数据目录 -->

                <name>hbase.rootdir</name>  

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

        </property>  

        <property>

                <!-- 是否分布式部署 -->

                <name>hbase.cluster.distributed</name>

                <value>true</value>

        </property>

        <property>

                <!-- zookooper列表当然只能部署数个,多个用逗号分开也可以指定端口如hadoop1:2181,hadoop2:2181-->

                <name>hbase.zookeeper.quorum</name>

                <value>hadoop1,hadoop2,hadoop3</value>

        </property>    

        <property>

                <!--zookooper配置、日志等临时文件的存储位置 -->

                <name>hbase.zookeeper.property.dataDir</name>

                <value>/home/hadoop/hbase/zookeeper</value>

        </property>

        <property>

                <!--不设置将会使用一个默认端口,可能不是zookeeper使用的2181,或者直接不配置改项,使用hbase.zookeeper.quorum配置时直接指定hadoop1:2181,hadoop2:2181-->

                <name>hbase.zookeeper.property.clientPort</name>

                <value>2181</value>

        </property>

 

(5)配置regionservers,添加slave 节点

编辑/opt/hbase-1.2.6.1/conf/regionservers去掉默认的localhost

增加hadoop2和hadoop3(如果有其他slave都加上)

hadoop2

hadoop3

 

(6)添加备份主节点(如果有的话)

backup-masters  (当然可以把slave中的某台设置为备份主节点)

 

(7)远程赋值hbase配置到其他slave机器上

如果有其他slave节点(因为我这里配置了1个slave的datanode节点):

scp 

 

(8)启动停止

启动顺序:

如果用hbase自带的Zookeeper启动顺序:先启动Hadoop->hbase

如果使用外置的Zookeeper启动顺序:Hadoop->zookeeper->hbase

 

a。在Hadoop已经启动成功的基础上,输入start-hbase.sh,过几秒钟便启动完成

b。输入hbase shell 命令 进入hbase命令模式输入status命令可以看到如下内容,1个master,2 servers,3机器全部成功启动

 

在浏览器中输入http://hadoop1:16010就可以在界面上看到hbase的配置了

 

停止顺序:

hbase->zookeeper->hadoop

 

c。当要停止hbase时输入stop-hbase.sh,过几秒后hbase就会被停止了

 

注意:

    为保证集群的可靠性,可以启动多个HMaste(hbase-daemon.sh start master,不能在已经启动HMaster的机器上再次启动,否则会报已经启动,必须填停止之前的HMaster进程,jps查看);Master还有一个职责就是负责分配Region给Region Server。HBase允许多个Master 节点共存,但是这需要Zookeeper的帮助。不过当多个Master节点共存时,只有一个Master是提供服务的,其他的Master节点处于待命的状态。当正在工作的Master节点宕机时,其他的Master则会接管 HBase 的集群.

 

(9)检查hbase启动情况(必须是master的ip:160100端口)

第一:

http://192.168.12.104:160100就可以在界面上看到hbase的配置了

 

第二:

当然可以使用hbase shell进入hbase的管理界面

然后输入status查看状态,输入list查看所有表,输入exit可以退出管理,回到命令行

 

问题:使用hbase shell查看hbase状态时,发现错误:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = Con

最终查找日志发现是hbase-site.xml中配置的clientPort为3351,实际上Zookeeper的默认端口为2181端口,所以更改所有机器的改配置项,停止后stop-hbase.sh 然后start-hbase.sh即可。

 

快来成为我的朋友或合作伙伴,一起交流,一起进步!
QQ群:961179337
微信:lixiang6153
邮箱:lixx2048@163.com
公众号:IT技术快餐
更多资料等你来拿!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝壳里的沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值