HBase分布式集群搭建(zookeeper+hadoop+hbase)超详细!

环境准备

zookeeper:zookeeper-3.4.14

hadoop:hadoop-2.8.5

hbase:hbase-1.4.13

master:namenode、resourcemanager,

slave1:secondarynamenode、datanode,

slave2:datanode

一、Hadoop集群搭建

1、hadoop安装包解压

tar zxvf hadoop-2.8.5.tar.gz

2、hadoop-env.sh、mapred-env.sh、yarn-env.sh三个配置文件添加JAVA_HOME

cd hadoop-2.8.5/etc/hadoop/
export JAVA_HOME=/usr/local/jdk1.8.0_191

3、修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

core-site.xml

扫描二维码关注公众号,回复: 12851801 查看本文章
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hadoopdata</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <!--
        这两个配置用于指定namenode和datanode存放数据的位置
        如果不指定,数据会存放到core-site.xml中配hadoop.tmp.dir目录下
    -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/hadoopdata/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/hadoopdata/data</value>
    </property>
    <!--配置数据副本数,不要超过datanode节点数-->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!--指定secondarynamenode所在节点-->
    <property>
        <name>dfs.secondary.http.address</name>
        <value>slave1:50090</value>
    </property>
</configuration>

mapred-site.xml

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

yarn-site.xml

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

4、修改slaves,添加数据节点

slave1
slave2

5、配置集群间免密登陆(一定要配置,否则后期启动阻塞)

ssh-keygen  四下回车
ssh-copy-id [email protected]
ssh-copy-id [email protected]
每个集群重复一遍,把本地的ssh复制到其他机器

6、将hadoop安装包分发给其他节点

scp -r hadoop-2.8.5 slave1:/usr/local/
scp -r hadoop-2.8.5 slave2:/usr/local/

7、全部节点hosts添加以下ip和名称

192.168.214.129 master
192.168.214.130 slave1
192.168.214.131 slave2

8、全部节点添加Hadoop环境变量

vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

9、在namenode主节点格式化文件系统

cd bin/
hdfs namenode -format

出现上图内容说明格式化成功。

10、主节点启动hdfs系统,resourcemanager节点启动yarn

start-dfs.sh
start-yarn.sh

关闭

cd sbin
stop-yarn.sh
stop-dfs.sh

11、Hadoop需要重装时:

1)删除每个机器中的hadoop日志

日志默认在HADOOP_HOME/logs下,如果不删除,日志文件会越积累越多,占用磁盘

2)删除原来的namenode和datanode产生的数据和文件。

删除配置的hadoop.tmp.dir这个目录,如果配置了dfs.datanode.data.dirdfs.datanode.name.dir也删除。

12、启动Hadoop当出现有datanode启动失败

查看core-site.xml文件中hadoop.tmp.dir的参数,在该目录下找到current目录下VERSION文件文件,修改其中的clusterID与namenode节点相同
/home/hadoop/hadoopdata/name/current
/home/hadoop/hadoopdata/data/current

二、Zookeeper集群搭建

1、zookeeper安装包解压

tar -zxvf zookeeper-3.4.14.tar.gz

2、复制conf/zoo_sample.cfg为zoo.cfg,修改zoo.cfg。新建目录data/,log/

dataDir=/usr/local/zookeeper-3.4.14/data
dataLogDir=/usr/local/zookeeper-3.4.14/log
server.0=192.168.214.129:2888:3888
server.1=192.168.214.130:2888:3888
server.2=192.168.214.131:2888:3888

3、将zookeeper安装包分发给其他节点

scp -r zookeeper-3.4.14 slave1:/usr/local/
scp -r zookeeper-3.4.14 slave2:/usr/local/

4、在所有机器上/zookeeper-3.4.14/data/下新建myid文件,根据上述步骤2中的名称(0、1、2)修改文件

vi /zookeeper-3.4.14/data/myid
0(master上)
1(slave1)
2(slave2)

5、启动、停止

bin/zkServer.sh start
​
bin/zkServer.sh stop

三、HBase集群搭建

1、hbase安装包解压

tar -zxvf hbase-1.4.13-bin.tar.gz

2、修改hbase-env.sh、hbase-site.xml、backup-masters、regionservers

cd hbase-1.4.13/conf

hbase-env.sh

# 加入JAVA_HOME
export JAVA_HOME=/usr/local/java/jdk1.8.0_73
# 指定不使用自带的zookeeper,如果搭建了zookeeper集群,改为false
export HBASE_MANAGES_ZK=true

hbase-site.xml

先创建hdfs://master:9000/user/hbase文件

hadoop fs -mkdir /user/hbase

configuration>
  <!--
  可以不配置,如果要配置,需要和zookeeper配置文件zoo.cfg中的dataDir指定的路径相同
  zoo.cfg中dataDir=/var/zookeeper
  那么:
  <property>
<name>hbase.master</name>
<value>master</value>
</property>
<property>
<name>hbase.master.port</name>
<value>15999</value>
</property>
  <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/var/zookeeper</value>
  </property>
  -->
   
  <!--指定hbase的数据在hdfs上存放的位置-->
  <property>
      <name>hbase.rootdir</name>
      <value>hdfs://master:9000/user/hbase</value>
  </property>
   
  <!--指定hbase集群为分布式集群-->
  <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
  </property>
   
  <!--指定zookeeper集群-->
  <property>
      <name>hbase.zookeeper.quorum</name>
      <value>slave1:2181,slave2:2181</value>
  </property>
   
  <!--用于hbase数据读取时的编码格式-->
  <property>
      <name>hbase.regionserver.thrift.framed</name>
      <value>true</value>
  </property>
  <property>
      <name>hbase.regionserver.thrift.compact</name>
      <value>true</value>
  </property>

</configuration>

backup-masters:添加备用hbase-master

vi backup-masters
​
slave1

regionservers:加入RegionServer节点列表

vi regionservers
# 删除localhost
master
slave1
slave2

3、复制hadoop文件core-site.xml和hdfs-site.xml复制到hbase

cp /usr/local/hadoop-2.8.5/etc/hadoop/core-site.xml ./
cp /usr/local/hadoop-2.8.5/etc/hadoop/hdfs-site.xml ./

4、将hbase安装包分发给其他节点

scp -r hbase-1.4.13 slave1:/usr/local/
scp -r hbase-1.4.13 slave2:/usr/local/

5、添加环境变量

vi /etc/profile
export HBASE_HOME=/usr/local/hbase-1.4.13
export PATH=$PATH:$HBASE_HOME/bin:$HBASE_HOME/sbin
source /etc/profile

6、启动hbase集群

start-hbase.sh

另起一个连接,使用hbase shell能够进入hbase控制台,表示安装成功。

7、启动HBase时出错

Caused by: java.io.IOException: Problem binding to /10.12.4.75:60000 : Cannot assign requested address. To switch ports use the 'hbase.master.port' configuration property.
​
解决方法:修改/etc/hosts文件,在本地ip后面加上通过 hostname -f 查询到的名字。

猜你喜欢

转载自blog.csdn.net/wh672843916/article/details/106060457
今日推荐