HBase-1.3.0+zookeeper-3.4.10+hadoop-2.7.3完全分布式安装

4 篇文章 0 订阅
1 篇文章 0 订阅

环境:Linux16.0.4,Hadoop-2.7.3,zookeeper-3.4.10,HBase-1.3.0

这里,我已经安装好了hadoop完全分布式集群(不会安装的网页可以在网上百度,有很多教程),节点为:

Master(namenode)  ip:192.168.8.4

Slave1(datanode)    ip:192.168.8.5

Slave2(datanode)    ip:192.168.8.6

如果不采用hbase自带的zookeeper,则安装hbaser之前需要先安装zookeeper

一、zookeeper-3.4.10完全分布式安装

(1)解压文件

        ubuntuserver@Master:~$ tar -zxvf zookeeper-3.4.10.tar.gz

(2)移动文件位置

        ubuntuserver@Master:~$ sudo mv zookeeper-3.4.10 /usr/local

 (3)修改hosts文件内容如下:

                   ubuntuserver@Master:~$ cat /etc/hosts
                  127.0.0.1       localhost
                  192.168.8.4     Master
                  192.168.8.5     Slave1
                  192.168.8.6     Slave2

                   这里由于我已经在安装hadoop集群的时候已经是修改好了的,所以只是显示出来作为提醒不要忘了修改。

 (4)修改zookeeper配置文件

            1.复制zoo_sample.cfg文件为zoo.cfg文件

                  ubuntuserver@Master:/usr/local/zookeeper-3.4.10/conf$ sudo cp zoo_sample.cfg zoo.cfg

            2.修改zoo.cfg文件参数如下

                 tickTime=2000  
initLimit=5
syncLimit=2
dataDir=/usr/local/storage/zookeeper
clientPort=2181
server.1=Master:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888

  (5)创建dataDir目录并设置权限

                  ubuntuserver@Master:~$ sudo mkdir -p /usr/local/storage/zookeeper
                  ubuntuserver@Master:~$ cd /usr/local

                  ubuntuserver@Master:/usr/local$ sudo chown -R ubuntuserver ./storage

                  同样在Slave1与Slave2中进行该步操作

  (6)远程分发安装文件

                 ubuntuserver@Master:/usr/local$ scp -r zookeeper-3.4.10 Slave1:~

                 ubuntuserver@Master:/usr/local$ scp -r zookeeper-3.4.10 Slave2:~

                 在Slave1与Slave2中将安装文件mv 到/usr/local

   (7)设置myid

               conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字

                ubuntuserver@Master:/usr/local$ echo "1" > ./storage/zookeeper/myid

                ubuntuserver@Slave1:/usr/local$ echo "2" > ./storage/zookeeper/myid  

                ubuntuserver@Slave2:/usr/local$ echo "3" > ./storage/zookeeper/myid

    (8)设置环境变量

                ubuntuserver@Master:sudo vim /etc/profile

                export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.10

                export PATH=$ZOOKEEPER_HOME/bin:$PATH

               ubuntuserver@Master:source /etc/profile

               同样在Slave1与Slave2中设置环境变量

    (9)启动zookeeper集群

                     对每一个节点进行启动

                     ubuntuserver@Master:~$ zkServer.sh start
                    ubuntuserver@Slave1:~$ zkServer.sh start

                    ubuntuserver@Slave2:~$ zkServer.sh start

                     对每一个节点执行zkServer.sh status命令可以查看该节点是leader还是follower

二、hbase-1.3.0完全分布式安装

           (1)解压并移动文件

                 ubuntuserver@Master:~$ hbase-1.3.0-bin.tar.gz

                 ubuntuserver@Master:~$sudo mv hbase-1.3.0 /usr/local

            (2)修改hbase-site.xml文件

                     修改内容如下:

                

<configuration>  
      <!--value要和hadoop的core-site.xml中Master及端口号一样--> 
      <property>  
          <name>hbase.rootdir</name>  
          <value>hdfs://192.168.8.4:9000/hbase</value> 
      </property>  
      <property>  
          <name>hbase.cluster.distributed</name>  
          <value>true</value>  
      </property>  
       <!--不要写成了hbase.master.port了,这个属性可以不配置-->    
      <property>            
          <name>hbase.master</name>  
          <value>hdfs://192.168.8.4:60000</value>  
      </property>  
        
      <property>  
          <name>hbase.zookeeper.quorum</name>  
          <value>Master:2181,Slave1:2181,Slave2:2181</value>  
      </property>  
          <property>  
          <name>hbase.zookeeper.property.dataDir</name>  
          <value>/usr/local/storage/zookeeper</value>  
      </property>  
</configuration>  

        (3)创建hbase目录

                   ubuntuserver@Master:~$ hadoop fs -mkdir /hbase

        (4)修改regionservers文件

                  将文件内容修改为与hadoop的slaves文件一样的内容。我这里的内容修改成了

                   Slave1

                   Slave2

         (5)修改hbase-env.sh

                    找到#export JAVA_HOME=**************这行。修改为自己的JAVA_HOME,如

                    export JAVA_HOME=/usr/local/jdk1.8.0_111

                      同时

                    设置export HBASE_MANAGES_ZK=false

         (6)

             将$HADOOP_HOME/share/hadoop/tools/lib下面的aws-java-sdk-1.7.4.jar拷贝到hbase的lib目录下面。

              如果不拷贝,会出现几个问题:

        a.即使能进入命令行,但是在Hbase命令行中执行命令会报Caused by: java.lang.ClassNotFoundException: com.amazonaws.event.ProgressListener这个错误。

             b.有可能HMaster能启动成功,但是RegionServer会启动不了。                    

         (7)替换hbase-1.3.0/lib文件夹下面的hadoop包

                 经本人验证,第7步(替换hbase-1.3.0/lib文件夹下面的hadoop包)可以不做,不过看到网上有些安装教程有替换步骤,因此也将替换步骤写下来。

               如果hadoop包与hadoop-2.7.3下面的不一致,则要将hadoop-2.7.3下面的包拷贝到hbase-1.3.0/lib下面。由于hbase-1.3.0是基于hadoop-2.5.1的,所以要先删 除。

                  a.删除hbase-1.3.0/lib下面的hadoop包

                             ubuntuserver@Master:/usr/local/hbase-1.3.0/lib$ rm -r hadoop*.jar

                  b.拷贝hadoop-2.7.3下面的hadoop包到hbase-1.3.0/lib下面

                              ubuntuserver@Master:~$ find /usr/local/hadoop/share/hadoop -name "hadoop*jar" | xargs -i cp {} /usr/local/hbase-1.3.0/lib                              

         (8)修改环境变量

                                 export HBASE_HOME=/usr/local/hbase-1.3.0

                                 export PATH=$HBASE_HOME/bin:$PATH

                                 三个节点都修改

          (9)分发hbase-1.3.0到其他节点                   

                               ubuntuserver@Master:/usr/local$ scp -r hbase-1.3.0 Slave1:~

                               ubuntuserver@Master:/usr/local$ scp -r hbase-1.3.0 Slave2:~

                               将hbase-1.3.0移动到/usr/local下面

          (10)重启三个节点

          (11)依次启动hadoop集群,zookeeper集群(三个节点依次启动),hbase集群(start-hbase.sh)

                                即在Master执行:ubuntuserver@Master:~$ start-dfs.sh

                                在三个节点(Master,Slave1,Slave2)执行:

                                ubuntuserver@Master:~$ zkServer.sh start

                                ubuntuserver@Slave1:~$ zkServer.sh start

                                ubuntuserver@Slave2:~$ zkServer.sh start

                                然后在Master执行:ubuntuserver@Master:~$ start-hbase.sh 

                                在Master输入:

                                 ubuntuserver@Master:~$ jps

2339 QuorumPeerMain

2214 SecondaryNameNode

2598 Jps

1998 NameNode

2495 HMaster

如果看到HMaster与QuorumPeerMain表示Master启动正常。

在Slave1与Slave2输入:

 ubuntuserver@Slave1:~$ jps
2065 QuorumPeerMain
2168 HRegionServer
2266 Jps
1935 DataNode

看到QuorumPeerMain与HRegionServer表示启动正常。

安装成功后,进入Hbase 。

执行:hbase shell


参考:https://www.cnblogs.com/freeweb/p/5526080.html

然后可以通过端口号16010在Web查看Hbase状态:http://MasterIP:16010/

问题解决:

问题1:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hbase-1.3.0/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

这个是jar包冲突了。删除hbase中的slf4j-log4j12-1.7.5.jar。

问题2:

2018-06-04 21:12:59,636 ERROR [main] regionserver.HRegionServerCommandLine: Region server exiting
java.lang.RuntimeException: Failed construction of Regionserver: class org.apache.hadoop.hbase.regionserver.HRegionServer
at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2698)
at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:64)
at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:87)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
at org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:2713)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2696)
... 5 more
Caused by: java.util.ServiceConfigurationError: org.apache.hadoop.fs.FileSystem: Provider org.apache.hadoop.fs.s3a.S3AFileSystem could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232)
at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at org.apache.hadoop.fs.FileSystem.loadFileSystems(FileSystem.java:2558)
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2569)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2586)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:89)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2625)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2607)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:368)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)
at org.apache.hadoop.hbase.util.FSUtils.getRootDir(FSUtils.java:1003)
at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:577)
... 10 more
Caused by: java.lang.NoClassDefFoundError: com/amazonaws/event/ProgressListener
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.newInstance(Class.java:412)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
... 22 more
Caused by: java.lang.ClassNotFoundException: com.amazonaws.event.ProgressListener
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 27 more

将$HADOOP_HOME/share/hadoop/tools/lib下面的aws-java-sdk-1.7.4.jar拷贝到hbase的lib目录下面。

最后贴张命令执行成功的图片:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值