- 目錄:
- 前言:
- 1. 上傳
- 2. 解壓
- 3. 重命名
- 4. 修改環境變量
- 5. 修改配置文件
- 6. 把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下
- 7. 發送到其他機器
- 8. 啟動
- 9. 查看
- 總結:
目錄:
前言:
最近由于工作需要又把HBase重裝了一遍,發現還是需要自己總結下安裝過程,不然等到再次裝的時候,還是會碰到很多坑。由于出了新版本,所以這里自己就找的比較新的版本來玩。
我的環境:Hadoop2.6.4+Centos6.7minimal版本+Hive2.1.1+Hbase2.0
1. 上傳
下載地址:http://archive.apache.org/dist/hbase/(大數據相關組件都可以在這里找)
將下載好的Hbase上傳到Centos。
2. 解壓
(這里就懶得改這個版本名稱了。。)
tar –zxvf hbase-0.99.2-bin.tar.gz
3. 重命名
mv hbase-0.99.2 hbase
4. 修改環境變量
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、在其他機器上執行上述操作。
5. 修改配置文件
需要修改/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.master</name>
<value>ha1:60000</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
<property>
<!--對應的bi是一個邏輯地址,這里配置的是HA機制的集群,bi也就算是HDFS的根目錄了 -->
<name>hbase.rootdir</name>
<value>hdfs://bi/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--為Hbase提供服務的zk地址,根據需求配置(一般3個節點就能達到高可靠了) -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>ha1,ha2,ha3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/hbase/tmp/zookeeper</value>
</property>
</configuration>
Regionservers添加如下內容
//是從機器的域名即HregService的節點
ha3
6. 把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下
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
7. 發送到其他機器
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
8. 啟動
start-hbase.sh
9. 查看
進程: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 expectedat jline.TerminalFactory.create(TerminalFactory.java:101)at jline.TerminalFactory.get(TerminalFactory.java:158)at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)at jline.console.ConsoleReader.<init>(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/