Linux第5課:安裝Hbase數(shù)據(jù)庫(一)

Linux第5課:安裝Hbase數(shù)據(jù)庫(一)

時間 2019-03-05?下午3:30

主講?張春志

地點 四樓電教室


一、Hbase數(shù)據(jù)庫簡介

HBase,即,Hadoop database,是一個基于hadoop的,分布式的、面向列、可伸縮的開源數(shù)據(jù)庫,利用HBase技術可在廉價PC Server上搭建起大規(guī)模結構存儲集群。

與Oracle相比,HBase擅長于存儲結構簡單的海量數(shù)據(jù)但索引能力有限,而Oracle等傳統(tǒng)關系型數(shù)據(jù)庫(RDBMS)能夠提供豐富的查詢能力,但卻疲于應對TB級別的海量數(shù)據(jù)存儲,HBase對傳統(tǒng)的RDBMS(關系型數(shù)據(jù)庫管理系統(tǒng))并不是取代關系,而是一種補充。

由于Hbase是基于Hadoop的,所以在安裝Hbase數(shù)據(jù)庫之前,需要先安裝Hadoop系統(tǒng)。

二、安裝Hadoop系統(tǒng)

Hadoop部署模式有4種:本地模式、偽分布模式、完全分布式模式、HA(高可用)完全分布式模式。

為熟悉Habse數(shù)據(jù)庫,以下,以本地模式為例,在Centos7系統(tǒng)下部署Hadoop。

1,安裝Java 1.7.0

由于hadoop是用java編寫的,所以要先部署java環(huán)境。

yum? ? -y? ? install? ? ?java-1.7.0-openjdk? ? ? ?java-1.7.0-openjdk-devel

安裝完成后,檢查java版本

java -version

2,下載hadoop 2.7.7

如無wget下載工具,需要先yum install wget

cd? ?/usr/local/

wget? ? http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

將hadoop安裝包下載到了/usr/local/目錄

解壓到當前目錄:

tar? zxvf? hadoop-2.7.7.tar.gz

3,配置環(huán)境變量

目前,hadoop的路徑為:/usr/local/hadoop-2.7.7/

java的路徑為:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64/

(注:java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64,這個文件夾名經(jīng)常會變,以實際為主)

以上兩個目錄,分別cd一下,看能不能進去。

vim /etc/profile

把以下兩行加入文本末尾:

export?PATH=/usr/local/hadoop-2.7.7/bin:$PATH

export?JAVA_HOME=/usr/lib/java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64

保存后使其生效:

source /etc/profile

繼續(xù)設置:

vim /usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

文末加入:

export?JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.211-2.6.17.1.el7_6.x86_64

export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.7/etc/hadoop/

source /usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

4,文件配置

vim /usr/local/hadoop-2.7.7/etc/hadoop/core-site.xml

<configuration>

? ? <property>

? ? ? ? <name>fs.defaultFS</name>

? ? ? ? <value>hdfs://localhost:9000</value>

? ? </property>

</configuration>

vim /usr/local/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

<configuration>

? ? <property>

? ? ? ? <name>dfs.replication</name>

? ? ? ? <value>1</value>

? ? </property>

</configuration>

格式化文件系統(tǒng):

hdfs namenode -format

5,設置SSH免密碼登陸:

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

6、啟動HDFS

/usr/local/hadoop-2.7.7/sbin/start-dfs.sh? 啟動

注:系統(tǒng)重啟后,hdfs需要手動啟動。

/usr/local/hadoop-2.7.7/sbin/stop-dfs.sh? 停止

jps?顯示當前所有的java進程

http://localhost:50070,本機已經(jīng)可以訪問,但其他機器無法訪問。

關閉防火墻,發(fā)現(xiàn)其他機器也可以訪問了。

(關閉新節(jié)點防火墻,因為Hadoop集群是在內網(wǎng)環(huán)境運行,可以關閉防火墻。)

8,修改默認50070端口號:

vim /usr/local/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

<configuration>

? ? <property>

? ? ? ? <name>dfs.replication</name>

? ? ? ? <value>1</value>

? ? ? ? <name>dfs.http.address</name>

? ? ? ? <value>10.0.11.5:8889</value>

? ? </property>

</configuration>

修改后重啟hdfs生效。該網(wǎng)址,稱為:NameNode web管理

9,hdfs的使用

HDFS,即Hadoop Distributed File System ,Hadoop分布式文件系統(tǒng)。它其實是將一個大文件分成若干塊保存在不同服務器的多個節(jié)點中。通過聯(lián)網(wǎng)讓用戶感覺像是在本地一樣查看文件,為了降低文件丟失造成的錯誤,它會為每個小文件復制多個副本(默認為三個),以此來實現(xiàn)多機器上的多用戶分享文件和存儲空間。

HDFS特點:

① 保存多個副本,且提供容錯機制,副本丟失或宕機自動恢復。默認存3份。

② 運行在廉價的機器上。

③ 適合大數(shù)據(jù)的處理。因為小文件也占用一個塊,小文件越多(1000個1k文件)塊越多,NameNode壓力越大。

塊大?。篐adoop1版本里默認為64M,Hadoop2版本里默認為128M

HDFS基本結構分NameNode、SecondaryNameNode、DataNode

NameNode(主節(jié)點):是Master節(jié)點,有點類似Linux里的根目錄。管理數(shù)據(jù)塊映射;處理客戶端的讀寫請求;配置副本策略;管理HDFS的名稱空間;

SecondaryNameNode(次節(jié)點):保存著NameNode的部分信息(不是全部信息NameNode宕掉之后恢復數(shù)據(jù)用),是NameNode的冷備份;合并fsimage和edits然后再發(fā)給namenode。(防止edits過大的一種解決方案)

DataNode(數(shù)據(jù)節(jié)點):負責存儲client發(fā)來的數(shù)據(jù)塊block;執(zhí)行數(shù)據(jù)塊的讀寫操作。是NameNode的組成部分。

HDFS命令:

hadoop fs命令可以用于HDFS、Local FS等不同的文件系統(tǒng)。而hdfs dfs命令只用于HDFS文件系統(tǒng)

列出文件目錄:

hadoop fs -ls /? ?注意后面的/

添加文件夾:

hadoop fs -mkdir /abc? ? ?注意前面必須加/

上傳文件:

hadoop fs -put a.txt /abc? ? 將本地的a.txt文件上傳到hdfs目錄下的/abc

下載文件:(get是put的逆操作)

hadoop fs -get /abc/a.txt? ?下載到當前目錄

刪除文件或非空文件夾:

hadoop fs -rm /demo1/abc.txt? ? 遞歸刪除-rmr可刪除有文件的目錄

清空回收站:

hadoop fs -expunge

查看文件大小:

hadoop fs -du -h /abc


附1:如何修改默認文件路徑

hdfs通過上述操作后,已經(jīng)建立。但是,文件存在哪里呢?假如,我們有兩塊硬盤,可不可以存在第二塊上呢?解決這個問題,就要修改默認文件路徑。

首先,我們來看默認存放路徑:

vim /usr/local/hadoop-2.7.7/share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

file://${hadoop.tmp.dir}/dfs/name

file://${hadoop.tmp.dir}/dfs/data

file://${hadoop.tmp.dir}/dfs/namesecondary

這里,{hadoop.tmp.dir}指的是:/tmp/hadoop-root/dfs

再看看文件系統(tǒng)容量和使用情況:

hdfs dfsadmin -report

修改前

方法如下:

1,在hadoop-2.7.7目錄下新建目錄data,把vdb5掛載到/usr/local/hadoop-2.7.7/data目錄,操作方法見第2課。

2,接下來,我們修改{hadoop.tmp.dir}所對應的新路徑。

vim /usr/local/hadoop-2.7.7/etc/hadoop/core-site.xml

<property>

? ? ? ? ? ? ? ? <name>hadoop.tmp.dir</name>

? ? ? ? ? ? ? ? <value>/usr/local/hadoop-2.7.7/data</value>

? ? ? ? ? ? ? ? <description>A base for other temporary directories.</description>

</property>

3,依次:停止》格式化》啟動

/usr/local/hadoop-2.7.7/sbin/stop-dfs.sh? 停止

hdfs namenode -format?格式化

(格式化后,會出現(xiàn)dfs文件夾,下有name一個文件夾)

/usr/local/hadoop-2.7.7/sbin/start-dfs.sh? 啟動

(啟動后,在dfs文件夾下,會出現(xiàn)name,data,namesecondary三個文件夾)

hadoop dfsadmin -report?結果如下:

成功!


附2:添加子節(jié)點(以1主2從為例)

hadoop裝在一臺計算機上,稱為偽分布式。真正的分布式,必須運行在多臺計算機上。下面,為hadoop添加2個子節(jié)點。

1,配置環(huán)境(子節(jié)點相同)

(1)安裝與master和其他slave相同的java環(huán)境,jdk版本要相同。

yum? ? -y? ? install? ? ?java-1.7.0-openjdk? ? ? ?java-1.7.0-openjdk-devel

(2)修改新節(jié)點的ip和主機名對應關系,修改/etc/hosts配置文件,定義ip與hostname的映射。

/etc/hosts文件是Linux系統(tǒng)中一個負責IP地址與域名快速解析的文件

vim /etc/hosts

末尾加入:

10.0.11.5 hadoop1

10.0.11.7? hadoop2

10.0.11.8? hadoop3

(3)關閉新節(jié)點防火墻,因為Hadoop集群是在內網(wǎng)環(huán)境運行,可以關閉防火墻。

(4)配置所有節(jié)點之間,兩兩免密碼登陸。詳見:關于SSH遠程登陸

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh-copy-id? -i /root/.ssh/id_rsa.pub root@hadoop2

關閉SELinux?(安全):

vim /etc/sysconfig/selinux?

設置:SELINUX=disabled? (原:SELINUX=enforcing)

2,修改masters和slaves配置:

列出所有的子節(jié)點的列表(IP或別名)

vim /usr/local/hadoop-2.7.7/etc/hadoop/slaves

hadoop2

hadoop3

vim /usr/local/hadoop-2.7.7/etc/hadoop/masters

hadoop1

3,復制hadoop文件夾到子節(jié)點

將master的hadoop目錄,復制到子節(jié)點相應路徑:

cd??/usr/local

scp -r hadoop-2.7.7 root@hadoop2:/usr/local

4,修改子節(jié)點的配置

修改相應配置,使子節(jié)點可單獨啟動。

5,四個xml文件配置

(1)core-site.xml

vim /usr/local/hadoop-2.7.7/etc/hadoop/core-site.xml

<configuration>

<property>

? ? ? ? <name>fs.defaultFS</name>

? ? ? ? <value>hdfs://hadoop1:9000/</value>

? ? ? ? <description>默認的HDFS端口,用于NameNode與DataNode之間到的通訊,IP為NameNode的地址</description>

? ? </property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop-2.7.7/data</value>

? <description>存放hadoop文件系統(tǒng)依賴的基本配置</description>

</property>

</configuration>

(2) hdfs-site.xml

vim /usr/local/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>/usr/local/hadoop-2.7.7/data/hdfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/usr/local/hadoop-2.7.7/data/hdfs/data</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hadoop1:9001</value>

</property>

</configuration>

(3) mapred-site.xml

vim /usr/local/hadoop-2.7.7/etc/hadoop/mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

(4)yarn-site.xml

vim /usr/local/hadoop-2.7.7/etc/hadoop/yarn-site.xml

<configuration>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop1</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>604800</value>

</property>

</configuration>

以上四個文件,分別同步到hadoop2和hadoop3

5.集群啟動

hdfs namenode -format? 格式化

/usr/local/hadoop-2.7.7/sbin/start-all.sh? 集群啟動,某個節(jié)點掉線后,開機后再運行一次即可。

/usr/local/hadoop-2.7.7/sbin/stop-all.sh? ?集群停止

相關命令:

hadoop dfsadmin -refreshNodes? ?刷新NameNode

/usr/local/hadoop-2.7.7/sbin/start-balancer.sh? ?負載均衡


執(zhí)行集群啟動后,啟動正常。用JPS查看,結果如下:

hadoop1:

1,NameNode

2,SecondaryNameNode

3,Resource Manager?資源管理

hadoop2和hadoop3:

1, DataNode

2,Node Manager

訪問10.0.11.5:50070:

訪問10.0.11.5:8088:

成功!期間,由于四個xml文件在不同版本下的表述不同,浪費了不少時間。


涉及單詞:

node?節(jié)點

core?核心

Distributed?分布式的

expunge?消除

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容