Ubuntu18.04 安裝部署Hadoop & Hbase
OS: Ubuntu18.04 Server
VMware
本文所需所有數據包均需從官網下載
配置ssh免密登陸
ssh localhost #登陸SSH,第一次登陸輸入yes
exit #退出登錄的ssh localhost
cd ~/.ssh/ #如果沒法進入該目錄,執行一次ssh localhost
ssh-keygen -t rsa
連續敲擊三次回車
其中,第一次回車是讓KEY存於默認位置,以方便後續的命令輸入。第二次和第三次是確定passphrase,相關性不大。之後再輸入:
cat ./id_rsa.pub >> ./authorized_keys #加入授權
ssh localhost #此時已不需密碼即可登錄localhost。
配置Java環境
安裝JDK
解壓JDK並重命名
tar -vxzf jdk-8u251-linux-x64.tar.gz
sudo mv jdk-8u251-linux-x64 java
將解壓好的JDK傳輸到自己的文件夾
sudo cp -r java /usr/local
配置JDK
設置環境變量
vim /etc/profile
在末尾添加
JAVA_HOME=/usr/local/java
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
重新加載環境變量的配置文件
source /etc/profile
檢測
java -version
結果
java version "1.8.0_251" Java(TM) SE Runtime Environment (build 1.8.0_251-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode
安裝配置Hadoop
安裝Hadoop
解壓並重命名
tar -vxzf hadoop-2.9.2.tar.gz
mv hadoop-2.9.2 hadoop
移動文件夾
sudo cp -r hadoop /usr/local
修改文件擁有者爲當前用戶
sudo chown -R 當前用戶名 ./hadoop
設置環境變量
sudo vim /etc/profile
添加以下內容
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
重載
source /etc/profile
檢測
hadoop version
返回結果:
Hadoop 2.9.2 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 826afbeae31ca687bc2f8471dc841b66ed2c6704 Compiled by ajisaka on 2018-11-13T12:42Z Compiled with protoc 2.5.0 From source with checksum 3a9939967262218aa556c684d107985 This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.9.2.jar
修改配置文件
xml修改的部分均爲
<configuration> </configuration>
內的內容
切換文件目錄
cd /usr/local/hadoop/etc/hadoop/
在 hadoop-env.sh 中更改 JAVA_HOME
sudo vim hadoop-env.sh
註釋掉
export JAVA_HOME=${JAVA_HOME}
添加
export JAVA_HOME=/usr/local/java
core-site.xml
sudo vim core-site.xml
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://0.0.0.0:9000</value>
</property>
<!-- 指定hadoop運行時產生文件的存儲路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
hdfs-site.xml
sudo vim hdfs-site.xml
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
<description>datanode上數據塊的物理存儲位置</description>
</property>
<!-- 設置hdfs副本數量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
測試,啓動
格式化namenode
hadoop namenode -format
啓動hdfs
start-all.sh
查看相應的進程
jps
訪問測試
192.168.73.107:50070
安裝配置Hbase
安裝Hbase
解壓與重命名
tar -vxzf hbase-1.4.13-bin.tar.gz
mv hbase-1.4.13 hbase
移動文件夾
sudo cp -r hbase /usr/local
設置環境變量
sudo vim /etc/profile
export HBASE_HOME=/usr/local/hbase
export HBASE_CONF_DIR=$HBASE_HOME/conf
export HBASE_CLASS_PATH=$HBASE_CONF_DIR
export PATH=$PATH:$HBASE_HOME/bin
重載
source /etc/profile
檢測安裝版本
hbase version
修改配置文件
xml修改的部分均爲
<configuration> </configuration>
內的內容
進入文件目錄
cd /usr/local/hbase/conf
hbase-env.sh中更改JAVA_HOME
sudo vim hbase-env.sh
添加
export JAVA_HOME=/usr/local/java
export HBASE_MANAGES_ZK=false
修改hbase-site.xml
sudo vim hbase-site.xml
修改
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///usr/local/hbase/hbase-tmp</value>
</property>
</configuration>
啓動Hbase
start-hbase.sh
查看運行情況
jps
HMaster一定要有
簡單使用Hbase
進入交互界面
hbase shell
進行一些基本數據庫操作
創建表
使用create命令創建一個新表.你必須規定表名和列族名
create 'test', 'cf'
顯示錶信息
使用list 命令可以顯示錶信息
list 'test'
使用 describe 命令顯示錶的詳細信息
describe 'test'
向表中加入數據
使用 put 命令
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'
掃描表
使用scan 命令掃描整個表取得數據
scan 'test'
取一行數據
使用get指令
get 'test', 'row1'
修改表模式
使用alter命令,如修改存儲版本數
disable 'test'
alter 'test', NAME=>'cf',VERSIONS=>5
enable 'test'
其他命令
disable table, drop table,enable table 等
思考題
- 請問僞分佈和分佈式的含義有何不同?就本實驗,你是如何理解在一臺計算機上做到“僞分佈”的?
利用0.0.0.0(本機所有IP地址)爲一個節點,製造出“僞分佈”
- 在1.2小節進行安裝SSH並設置SSH無密碼登陸,請問這個安裝的目的是什麼?
用本地賬戶進行遠程登陸,實現“僞分佈”的效果
- 如果繼續向Hbase的test表中put行鍵爲”row1”,值爲其它字符串的數據,put ‘test’ ,’row1’, ‘cf:a’, ‘value6’,會發生什麼?如果採用語句get ‘test’, ‘row1’, {COLUMN=>‘cf:a’, VERSIONS=>3} 進行查詢,分析你得到的結果。put與關係數據庫的插入有何不同?
新值會被覆蓋
會保留歷史結果,查詢的話顯示最新覆蓋內容