Hbase學習文檔(超詳細單機安裝)
一、前言
1.1簡述
本文分爲五個部分:linux主機名的設置、jdk的安裝、hadoop的安裝、單機模式下hbase的安裝、hbase的shell常用命令及java實例。
1.2環境要求
本文使用系統環境:centOS6.5,hadoop-2.5.2,hbase-0.98.13-hadoop2-bin,jdk1.8;
可能需要用到的window軟件:SwitchHosts(若使用雲服務器,則可以使用與ip綁定的域名作爲主機名)。
二、linux主機名的設置
2.1 臨時修改hostname
注:如果是雲服務器推薦使用域名作爲主機名,如果是虛擬機可以自定義.
# hostname hbase.domain
2.2 永久修改hostname
# vi /etc/sysconfig/network
結果如下:
2.3 配置Host
# vi /etc/hosts
結果如下:
若配置完,沒生效可以重啓服務器
2.4 防火牆設置
本文推薦自己設置防火牆入棧規制,不要直接關閉防火牆.本文只是學習,所以在這裏選擇關閉防火牆,若是要直接使用的話最好不要關閉防火牆.
查看防火牆狀態:
# service iptables status
臨時關閉防火牆:
# service iptables stop
永久關閉防火牆:
# chkconfig iptables off
三、jdk的安裝
在確保linux系統本身沒有安裝jdk的時候,執行下面步驟:
3.1 上傳jdk
將jdk-8u171-linux-x64.tar.gz這個文件上傳到linux虛擬機然後,解壓到/opt/modules/這個目錄下,若沒有這個目錄可以用mkdir -p,創建目錄。
3.2 解壓jdk
# tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/modules/
3.3 配置環境變量
# vi /etc/profile
在末尾行添加
# set java environment
JAVA_HOME=/opt/modules/jdk1.8.0_171
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
# source /etc/profile 使更改的配置立即生效
# java -version 驗證結果是否正確
四、hadoop的安裝
4.1 驗證hadoop是否已經安裝.
# hadoop version
如果一切正常,會得到下面的輸出:
如果系統上是無法找到 Hadoop,那麼證明還未安裝.
4.2 開始安裝hadoop
4.2.1上傳hadoop-2.5.2.tar.gz到/root目錄下:
4.2.2 將文件解壓到/opt/modules/hadoopstandalone/目錄下:
# tar -zxvf /root/hadoop-2.5.2.tar.gz -C /opt/modules/hadoopstandalone/
4.2.3 配置Hadoop環境變量
可以通過附加下面的命令在 〜/etc/profile文件中以設置 Hadoop 環境變量。
export HADOOP_HOME=/opt/modules/hadoopstandalone/hadoop-2.5.2
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
#source /etc/profile 可以使配置立即生效
4.2.4 Hadoop配置
找到位於 “$HADOOP_HOME/etc/hadoop” 目錄下所有的Hadoop配置文件。根據需要Hadoop將配置文件中的內容作修改。
#cd $HADOOP_HOME/etc/hadoop
爲了使用Java開發Hadoop程序,必須用java在系統中的位置來替換 hadoop-env.sh文件中的 java環境變量JAVA_HOME的值。
export JAVA_HOME=/opt/modules/jdk1.8.0_171
4.2.5 編輯以下文件來配置Hadoop
core-site.xml
core-site.xml文件中包含,如:用於Hadoop實例的端口號,分配給文件系統,存儲器限制用於存儲數據存儲器和讀/寫緩衝器的大小的信息。
打開core-site.xml,並在和標籤之間添加以下屬性。
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hbase.domain:9000</value>
</property>
</configuration>
如圖:
hdfs-site.xml
hdfs-site.xml文件中包含,如:複製數據的值,NameNode的路徑,本地文件系統,要存儲Hadoop基礎架構的Datanode路徑的信息。
假設有以下數據。
dfs.replication (data replication value) = 1
(//opt/home/hadoop/hadoopinfra/hdfs/namenode目錄路徑可以自己定義)
namenode path = //opt/home/hadoop/hadoopinfra/hdfs/namenode
(//opt/home/hadoop/hadoopinfra/hdfs/datanode目錄路徑可以自己定義)
datanode path = //opt/home/hadoop/hadoopinfra/hdfs/datanode
打開這個文件,並在和 標記之間添加以下屬性。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///opt/home/hadoop/hadoopinfra/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///opt/home/hadoop/hadoopinfra/hdfs/datanode</value>
</property>
</configuration>
結果如下:
注:上面的文件,所有的屬性值是用戶定義的,可以根據自己的Hadoop的基礎架構進行更改。
yarn-site.xml
此文件用於配置成yarn在Hadoop中。打開yarn-site.xml文件,並在標籤之前添加以下屬性到這個文件中。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
結果如下:
mapred-site.xml
此文件用於指定MapReduce框架以使用。默認情況下Hadoop包含yarn-site.xml模板。首先,它需要從mapred-site.xml複製模板到mapred-site.xml文件,使用下面的命令來。
#cp mapred-site.xml.template mapred-site.xml
打開 mapred-site.xml 文件,並在 和 標籤之間添加以下屬性。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
結果如下:
4.2.6 驗證Hadoop安裝
(1) 名稱節點設置
設置名稱節點使用“hdfs namenode -format”命令如下
# cd ~
# hdfs namenode -format
預期結果如下:
10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = hbase.domain/192.168.0.22
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.5.2
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/opt/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hbase.domain/192.168.0.22
************************************************************/
(2)驗證Hadoop DFS
下面的命令用來啓動DFS。執行這個命令將啓動Hadoop文件系統。
# start-dfs.sh
預期結果如下:
10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /opt/home/hadoop/hadoop-
2.5.2/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-
2.5.2/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
(3)驗證yarn腳本
# start-yarn.sh
預期結果如下:
starting yarn daemons
starting resourcemanager, logging to /opt/home/hadoop/hadoop-
2.5.2/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /opt/home/hadoop/hadoop-
2.5.2/logs/yarn-hadoop-nodemanager-localhost.out
(4)訪問本機的瀏覽器
訪問Hadoop的默認端口號爲50070。使用以下網址,以獲取Hadoop服務在瀏覽器中。
http://192.168.0.22:50070
(5)驗證集羣中的所有應用程序
訪問羣集的所有應用程序的默認端口號爲8088。使用以下URL訪問該服務。
http://192.168.0.22:8088
五、單機模式下hbase的安裝
5.1 上傳hbase-0.98.13-hadoop2-bin.tar.gz 到/root目錄下:
5.2 將hbase-0.98.13-hadoop2-bin.tar.gz解壓安裝在/usr/local目錄下:
# tar -zxvf /root/hbase-0.98.13-hadoop2-bin.tar.gz -C /usr/local
5.3 單機模式下配置Hbase
在繼續HBase之前,需要編輯下列文件和配置HBase。
hbase-env.sh
爲HBase設置Java目錄,並從conf文件夾打開hbase-env.sh文件。編輯JAVA_HOME環境變量,改變路徑到當前JAVA_HOME變量:
# cd /usr/local/hbase-0.98.13-hadoop2/conf
# vi hbase-env.sh
這將打開HBase的env.sh文件。現在使用當前值替換現有JAVA_HOME值,如下圖所示。
hbase-site.xml
這是HBase的主配置文件。通過在 /usr/local/hbase-0.98.13-hadoop2 打開HBase主文件夾,設置數據目錄到合適的位置。在 conf 文件夾裏面有幾個文件,現在打開hbase-site.xml文件:
# cd /usr/local/hbase-0.98.13-hadoop2/
# cd conf
# vi hbase-site.xml
在hbase-site.xml文件裏面,找到 和 標籤。並在其中,設置屬性鍵名爲“hbase.rootdir”,如下圖所示的HBase目錄。
<configuration>
///opt/home/hadoop/HBase/HFiles這個目錄可以自己定義
<property>
<name>hbase.rootdir</name>
<value>file:/opt/home/hadoop/HBase/HFiles</value>
</property>
///opt/home/hadoop/zookeeper這個目錄可以自己定義
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/home/hadoop/zookeeper</value>
</property>
</configuration>
如下圖所示:
到此 HBase 的安裝配置已成功完成。可以通過使用 HBase 的 bin 文件夾中提供 start-hbase.sh 腳本啓動 HBase。爲此,打開HBase 主文件夾,然後運行 HBase 啓動腳本,如下圖所示。
# cd /usr/local/hbase-0.98.13-hadoop2/bin
# ./start-hbase.sh
如果一切順利,當運行HBase啓動腳本,它會提示一條消息:HBase has started
starting master, logging to /usr/local/hbase-0.98.13-hadoop2/bin/../logs/hbase-tpmaster-localhost.localdomain.out
啓動HBase主服務器
這在相同目錄。啓動它,如下圖所示:
# ./bin/local-master-backup.sh start 2 (數字是用來區分不同的hbase服務器的)
啓動區域服務器
啓動區域服務器,如下所示.
# ./bin/./local-regionservers.sh start 3
啓動HBase Shell
可以使用以下命令啓動HBase shell
# cd bin
# ./hbase shell
這會給出HBase shell 的提示符,如下圖所示。
5.4 HBase的Web界面
要訪問 HBase 的 Web界面,在瀏覽器中鍵入以下URL:
http://192.168.0.22:60010
以下界面列出了當前正在運行的區域服務器,備份主服務以及HBase表。
HBase區域服務器和備份主服務
HBase表
5.5 設置類路徑
繼續進行之前編程,在.bashrc文件中設置類路徑到HBase庫。打開.bashrc文件編輯,如下所示。
# vi /etc/profile
爲HBase庫設置類路徑(HBase的lib文件夾),如下圖所示。
六、hbase的shell常用命令及java實例
6.1 hbase的shelll常用命令
6.1.1通用命令
(1)status: 提供HBase的狀態,例如,服務器的數量。
(2)version: 提供正在使用HBase版本。
(3)table_help: 表引用命令提供幫助。
(4)whoami: 提供有關用戶的信息.
6.1.2 數據定義語言
(1) create: 創建一個表。
(2)list: 列出HBase的所有表。
(3)disable: 禁用表。
(4)is_disabled: 驗證表是否被禁用。
表示被禁用:
表示啓用:
(5)enable: 啓用一個表。
(6)is_enabled: 驗證表是否已啓用。
表示啓用:
表示被禁用:
(7)describe: 提供了一個表的描述。
(8)alter: 改變一個表。
(9)exists: 驗證表是否存在。
(10)drop: 從HBase中刪除表。
分兩步:首先disable,然後drop
(11)drop_all: 丟棄在命令中給出匹配“regex”的表。
hbase> drop_all ‘t.*’
注意:要刪除表,則必須先將其禁用。
假設有一些表的名稱如下:
所有這些表以字母test0開始。首先使用disable_all命令禁用所有這些表如下所示。
現在,可以使用 drop_all 命令刪除它們,如下所示。
(12)Java Admin API: 在此之前所有的上述命令,Java提供了一個通過API編程來管理實現DDL功能。在這個org.apache.hadoop.hbase.client包中有HBaseAdmin和HTableDescriptor 這兩個重要的類提供DDL功能。
6.1.3 數據操縱語言
(1) put: 把指定列在指定的行中單元格的值在一個特定的表。
put ‘table name’,'row ',‘Column family:column name’,‘new value’
(2)get: 取行或單元格的內容。
get ‘table name’,‘row1’
(3)delete: 刪除表中的單元格值。
delete ‘table name’, ‘row’, 'column name ', ‘time stamp’
(4)deleteall: 刪除給定行的所有單元格。
deleteall ‘table name’, ‘row’,
(5)scan: 掃描並返回表數據。
scan ‘table name’
(6)count: 計數並返回表中的行的數目。
count ‘table name’
(7)truncate: 禁用,刪除和重新創建一個指定的表。
truncate ‘table name’
(8)Java client API: 在此之前所有上述命令,Java提供了一個客戶端API來實現DML功能,CRUD(創建檢索更新刪除)操作更多的是通過編程,在org.apache.hadoop.hbase.client包下。 在此包HTable 的 Put和Get是重要的類。
6.2 java實例
6.2.1 準備
如果是用虛擬機搭建的hbase環境,要對虛擬機服務器的ip進行硬編碼.如果是雲服務器則可採用域名直接訪問hbase服務.進行硬編碼時,推薦採用switchhost進行硬編碼,不要直接在C盤下操作host文件.
測試硬編碼是否已正常啓用可以使用瀏覽器用:
http://hbase.domain:60010/master-status
6.2.2 java程序與hbase服務器的交互
詳細可參考案例代碼:
相關軟件下載:
鏈接:https://pan.baidu.com/s/17QnMfoXXvNNL0v4if6uJcw
提取碼:26pr
案例代碼下載:
鏈接:https://pan.baidu.com/s/1eb0xUI0vg2QNFtZKLC61mA
提取碼:nnrd