最近由于工作需要又把HBase重装了一遍,发现还是需要自己总结下安装过程,不然等到再次装的时候,还是会碰到很多坑。由于出了新版本,所以这里自己就找的比较新的版本来玩。
我的环境:Hadoop2.6.4+Centos6.7minimal版本+Hive2.1.1+Hbase2.0
下载地址:http://archive.apache.org/dist/hbase/(大数据相关组件都可以在这里找)
将下载好的Hbase上传到Centos。
(这里就懒得改这个版本名称了。。)
tar –zxvf hbase-0.99.2-bin.tar.gz
mv hbase-0.99.2 hbase
1、 在master机器上执行下面命令:
su – root
vi/etc/profile
添加内容:
export HBASE_HOME=/home/hadoop/hbase
export PATH=$PATH:$HBASE_HOME/bin
执行命令:
source /etc/profile
su – hadoop
2、在其他机器上执行上述操作。
需要修改/home/hadoop/hbase/conf下的hbase-env.sh,hbase-site.xml,regionservers 三个配置文件。(你也可以直接先把三个文件配置好然后覆盖conf/下的文件)
对于hbase-env.sh添加如下内容
export JAVA_HOME=/root/apps/jdk1.8.0_181 #jdk安装目录
# Extra Java CLASSPATH elements. Optional.这行代码是错的,需要可以修改为下面的形式。据说设置HBASE_CLASSPATH会在玩Flume的时候报错。所以就直接用下面的JAVA_CLASSPATH代替,效果一样。
#export HBASE_CLASSPATH=/home/hadoop/hbase/conf
export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export HBASE_MANAGES_ZK=false #如果使用独立安装的zookeeper这个地方就是false
hbase-site.xml中加入如下内容
<configuration>
<property>
<name>hbase.mastername>
<value>ha1:60000value>
property>
<property>
<name>hbase.master.maxclockskewname>
<value>180000value>
property>
<property>
<name>hbase.rootdirname>
<value>hdfs://bi/hbasevalue>
property>
<property>
<name>hbase.cluster.distributedname>
<value>truevalue>
property>
<property>
<name>hbase.zookeeper.quorumname>
<value>ha1,ha2,ha3value>
property>
<property>
<name>hbase.zookeeper.property.dataDirname>
<value>/home/hadoop/hbase/tmp/zookeepervalue>
property>
configuration>
Regionservers添加如下内容
//是从机器的域名即HregService的节点
ha3
cp /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml /home/hadoop/hbase/conf
cp /home/hadoop/hadoop/etc/hadoop/core-site.xml /home/hadoop/hbase/conf
scp –r /home/hadoop/hbase hadoop@slave1:/home/hadoop
scp –r /home/hadoop/hbase hadoop@slave2:/home/hadoop
scp –r /home/hadoop/hbase hadoop@slave3:/home/hadoop
start-hbase.sh
进程:jps
进入hbase的shell:hbase shell
退出hbase的shell:quit
页面:http://master:60010
不幸的是在打开Web页面时发现无法打开,查了资料后才知道原来Hbase在1.x版本后将端口号改为16010。
还有就是执行hbase shell的时候报错如下:
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.TerminalFactory.create(TerminalFactory.java:101)
at jline.TerminalFactory.get(TerminalFactory.java:158)
at jline.console.ConsoleReader.(ConsoleReader.java:229)
at jline.console.ConsoleReader.(ConsoleReader.java:221)
at jline.console.ConsoleReader.(ConsoleReader.java:209)
at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
原因
hadoop目录/hadoop-2.6.4/share/hadoop/yarn/lib存在老版本jline
解决方案
将hive下的新版本jline的JAR包拷贝到hadoop下:cp /hive/lib/jline-2.12.jar /hadoop/share/hadoop/yarn/lib/