hbase存儲路徑
1. HBase存儲架構
上圖是HBase的存儲架構圖。
由上圖可以知道,客戶端是通過Zookeeper找到HMaster,然後再與具體的Hregionserver進行溝通讀寫數據的。
具體到物理實現,細節包括以下這些:
首先要清楚HBase在hdfs中的存儲路徑,以及各個目錄的作用。在hbase-site.xml 文件中,配置項 <name> hbase.rootdir</name> 默認 「/hbase」,就是hbase在hdfs中的存儲根路徑。以下是hbase0.96版本的個路徑作用。1.0以後的版本請參考這里: https://blog.bcmeng.com/post/hbase-hdfs.html
1、 /hbase/.archive
HBase 在做 Split或者 compact 操作完成之後,會將 HFile 移到.archive 目錄中,然後將之前的 hfile 刪除掉,該目錄由 HMaster 上的一個定時任務定期去清理。
2、 /hbase/.corrupt
存儲HBase損壞的日誌文件,一般都是為空的。
3、 /hbase/.hbck
HBase 運維過程中偶爾會遇到元數據不一致的情況,這時候會用到提供的 hbck 工具去修復,修復過程中會使用該目錄作為臨時過度緩沖。
4、 /hbase/logs
HBase 是支持 WAL(Write Ahead Log) 的,HBase 會在第一次啟動之初會給每一台 RegionServer 在.log 下創建一個目錄,若客戶端如果開啟WAL 模式,會先將數據寫入一份到.log 下,當 RegionServer crash 或者目錄達到一定大小,會開啟 replay 模式,類似 Mysql 的 binlog。
5、 /hbase/oldlogs
當.logs 文件夾中的 HLog 沒用之後會 move 到.oldlogs 中,HMaster 會定期去清理。
6、 /hbase/.snapshot
hbase若開啟了 snapshot 功能之後,對某一個用戶表建立一個 snapshot 之後,snapshot 都存儲在該目錄下,如對表test 做了一個 名為sp_test 的snapshot,就會在/hbase/.snapshot/目錄下創建一個sp_test 文件夾,snapshot 之後的所有寫入都是記錄在這個 snapshot 之上。
7、 /hbase/.tmp
當對表做創建或者刪除操作的時候,會將表move 到該 tmp 目錄下,然後再去做處理操作。
8、 /hbase/hbase.id
它是一個文件,存儲集群唯一的 cluster id 號,是一個 uuid。
9、 /hbase/hbase.version
同樣也是一個文件,存儲集群的版本號,貌似是加密的,看不到,只能通過web-ui 才能正確顯示出來
10、 -ROOT-
該表是一張的HBase表,只是它存儲的是.META.表的信息。通過HFile文件的解析腳本 hbase org.apache.hadoop.hbase.io.hfile.HFile -e -p -f 可以查看其存儲的內容,如下所示:
以上可以看出,-ROOT-表記錄的.META.表的所在機器是dchbase2,與web界面看到的一致:
11、 .META.
通過以上表能找到.META.表的信息,該表也是一張hbase表,通過以上命令,解析其中一個region:
以上可以看出,adt_app_channel表的數據記錄在dchbase3這台reginserver上,也與界面一致,如果有多個region,則會在表名後面加上rowkey的范圍:
通過以上描述,只要找到-ROOT-表的信息,就能根據rowkey找到對應的數據,那-ROOT-在哪裡找呢?從本文一開始的圖中可以知道,就是在zookeeper中找的。進入zookeeper命令行界面:
可以看出-ROOT-表存儲在 dchbase3 機器中,對應界面如下:
以上就是HBase客戶端根據指定的rowkey從zookeeper開始找到對應的數據的過程。
那在Region下HBase是如何存儲數據的呢?
以下就具體操作一張表,查詢對應的HFile文件,看HBase的數據存儲過程。
在HBase創建一張表 test7,並插入一些數據,如下命令:
查看wal日誌,通過 hbase org.apache.hadoop.hbase.regionserver.wal.HLog --mp -p 命令可以解析HLog文件,內容如下:
查看HFile文件,內容如下:
由此可見,HFile文件就是存儲HBase的KV對,其中Key的各個欄位包含了的信息如下:
由於hbase把cf和column都存儲在HFile中,所以在設計的時候,這兩個欄位應該盡量短,以減少存儲空間。
但刪除一條記錄的時候,HBase會怎麼操作呢?執行以下命令:
刪除了rowkey為200的記錄,查看hdfs,原來的HFile並沒有改變,而是生成了一個新的HFile,內容如下:
所以在HBase中,刪除一條記錄並不是修改HFile裡面的內容,而是寫新的文件,待HBase做合並的時候,把這些文件合並成一個HFile,用時間比較新的文件覆蓋舊的文件。HBase這樣做的根本原因是,HDFS不支持修改文件。
2. hbase wal 是同步的嗎
hbase wal 是同步的。
HBase的數據文件都存儲在HDFS上,格式主要有兩種:HFile:HBase中KeyValue數據的存儲格式,HFile是Hadoop的二進虛扒制文件,實際上StoreFile就是對HFile做了輕量級的包裝,即StoreFile底層就是HFile。
其中數據文件枯晌位置可為本地文件目錄,也可以分布式文件系統hdfs的路徑。當其為前者時,直接指定即可,也可以加前綴file:///而當差敗昌其偉後者時,必須明確指明hdfs的路徑,例如hdfs://mymaster:9000/path。
訪問介面:
1. Native java API,最常規和高效的訪問方式,適合Hadoop MapRece Job並行批處理HBase表數據。
2. HBase Shell,HBase的命令行工具,最簡單的介面,適合HBase管理使用。
3. Thrift Gateway,利用Thrift序列化技術,支持C++,PHP,Python等多種語言,適合其他異構系統在線訪問HBase表數據。
4. REST Gateway,支持REST 風格的Http API訪問HBase, 解除了語言限制。
5. Pig,可以使用Pig Latin流式編程語言來操作HBase中的數據,和Hive類似,本質最終也是編譯成MapRece Job來處理HBase表數據,適合做數據統計。
3. 涓ゅ彴鏈嶅姟鍣ㄦ墜鍔ㄩ儴緗插ぇ鏁版嵁騫沖彴
涓ゅ彴鏈嶅姟鍣ㄦ墜鍔ㄩ儴緗插ぇ鏁版嵁騫沖彴
##### 鍒濆嬫湇鍔″櫒鏁伴噺
- 2鍙癱entos7
##### 寤鴻閰嶇疆
- 32G(RAM)
- 24cpu
- 10t(SATA)
### 1.鐜澧
- 緋葷粺centos7
- jdk錛1.8.0_171錛64浣嶏級
- zookeeper錛3.4.8
- spark-2.1.0-bin-hadoop2.6
- kafka_2.10-0.10.2.1
- hadoop-2.7.0
- hbase-1.2.6
- elasticsearch-6.3.0
### 2.緋葷粺鍑嗗
瀵瑰簲鐨勫畨瑁呭寘鏂囦歡錛
elasticsearch-6.3.0.tar.gz
hadoop-2.7.0.tar.gz
hbase-1.2.6-bin.tar.gz
jdk-8u171-linux-x64.tar.gz
kafka_2.10-0.10.2.1.tgz
mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
spark2.1.0hadoop2.6.tgz.gz
zookeeper-3.4.8.tar.gz
涓銆 閰嶇疆濂絟osts
```
涓ゅ彴璁懼囩殑host
ip1 hello1
ip2 hello2
鍏抽棴闃茬伀澧
systemctl stop firewalld
systemctl disable firewalld
浜屻佹満鍣ㄤ箣闂村仛濂藉厤瀵
1. 鍦╤ello1鏈嶅姟鍣ㄤ腑錛宑d /root/
2. ssh-keygen -trsa (鍏ㄩ儴鎸夊洖杞︼紝璧伴粯璁ら厤緗)
3. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4. chmod 600 ~/.ssh/authorized_keys
5. scp ~/.ssh/authorized_keys root@hello2:~/.ssh/
鍒版ゅ勬椂鍙浠ュ疄鐜癶ello1鏈哄櫒涓婇氳繃root璐︽埛鐧誨綍鍒癶ello2涓錛屼絾浠巋ello2涓鏃犳硶閫氳繃鍏嶅瘑鐮佺櫥褰曞埌hello1鏈嶅姟鍣ㄣ
6. 鍦╤ello2鏈嶅姟鍣ㄤ腑錛宑d /root/
7. ssh-keygen -trsa (鍏ㄩ儴鎸夊洖杞︼紝璧伴粯璁ら厤緗)
8. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
9. scp ~/.ssh/authorized_keys root@hello1:~/.ssh/
鍒版ゅ勬椂鍙浠ュ疄鐜癶ello1鏈哄櫒涓巋ello2鏈哄櫒涔嬮棿鍏嶅瘑鐮佷簰閫
涓夈佸緩絝嬩竴涓鐢ㄦ埛鎿嶄綔elasticsearch鐢ㄦ埛錛屽悗鏈熸墍鏈夊畨瑁呰蔣浠舵斁鍦ㄨョ洰褰曚笅錛堝綋鍓嶄嬌鐢╮oot璐︽埛瀹夎咃級
1.娣誨姞鐢ㄦ埛錛
useradd -m -s /bin/bash es
2.涓鴻ョ敤鎴瘋劇疆瀵嗙爜錛
password es
鍥涖佸畨瑁匤DK
濡傛灉緋葷粺鑷甯openjdk錛屽厛灝嗗叾鍗歌澆鎺夛紒
1.鍒涘緩jdk瀹夎呰礬寰(hello1銆乭ello2閮芥墽琛)
鎵ц岋細 mkdir /usr/java
2.瑙e帇緙﹋dk鍒板畨瑁呯洰褰
鎵ц岋細 tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
3.娣誨姞鐜澧冨彉閲
vi /etc/profile,娣誨姞浠ヤ笅璇鍙
export JAVA_HOME=/usr/java/jdk1.8.0_171
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
鎵ц岋細source /etc/profile
4.澶嶅埗瀹夎呭寘鍜屾暟鎹鐩褰曞埌hello2
scp -r /usr/java/jdk1.8.0_171 hello2:/usr/java/
scp /etc/profile hello2:/etc/
鐧誨綍鍒癶ello2涓婏紝榪涘叆/home/es鐩褰
鎵ц岋細 source /etc/profile
5銆侀獙璇侊細
涓ゅ彴鏈嶅姟鍣ㄤ笂鍒嗗埆鎵ц岋細 java -version,鏌ョ湅杈撳嚭鐨勭増鏈鏄鍚︿笌瀹夎呯殑鐗堟湰涓鑷淬
浜斻佸畨瑁卪ysql
1.濡傛灉centos緋葷粺涓鑷甯mariadb錛屽厛鍗歌澆mariadb銆
2.瑙e帇mysql瀹夎呭寘紼嬪簭
鎵ц岋細tar -xvf mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
3.渚濇″畨瑁呴噷闈rpm鍖呯粍寤
rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.23-1.el7.x86_64.rpm
4.鍚鍔∕ySQL
鎵ц岋細 systemctl start mysqld
5.鐧誨綍mysql鏈嶅姟鍣
榪欑嶆柟寮忓畨瑁呭ソ鍚庯紝浼氬啀my.cnf鏂囦歡涓鑷鍔ㄧ敓鎴愪竴涓瀵嗙爜錛
鎵ц岋細cat /var/log/mysqld.log | grep password錛 鍑虹幇濡備笅璁板綍錛
2017-09-15T01:58:11.863301Z 1 [Note] A temporary password is generated for root@localhost: m-NdrSG4ipuO
鍏朵腑鈥渕-NdrSG4ipuO鈥濅負mysql root璐︽埛鐨勫垵濮嬪瘑鐮併
鐧誨綍錛
鎵ц岋細 mysql -uroot -p
杈撳叆瀵嗙爜錛 m-NdrSG4ipuO錛屽嵆鍙榪涘叆mysql鏈嶅姟鍣ㄣ
鍚庣畫鍙鑷琛屼慨鏀箁oot瀵嗙爜錛屽壋寤烘柊璐︽埛絳夋搷浣溿
鍏銆佸畨瑁厇ookeeper
1.瑙e帇zookeeper瀹夎呭寘鍒版寚瀹氱洰褰曪紙/home/es錛
tar -zxvf zookeeper-3.4.8.tar.gz -C /home/es
2.鍒涘緩紼嬪簭杞榪炴帴
cd /home/es/
ln -s zookeeper-3.4.8 zookeeper
3.娣誨姞鎵ц岃礬寰勭幆澧
vi /etc/profile
娣誨姞
export ZOOKEEPER_HOME=/home/es/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
鎵ц
source /etc/profile
4.淇鏀歸厤緗鏂囦歡
cd /home/es/zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg
鍦/home/data涓嬪壋寤哄瑰簲鐨剒ookeeper鏁版嵁瀛樺偍鐩褰
mkdir /home/data/zookeeper
mkdir /home/data/zookeeper/data
mkdir /home/data/zookeeper/log
淇鏀歸厤緗鏂囦歡錛歝onf/zoo.cfg錛屾坊鍔犱互涓嬭鍙
dataDir=/home/data/zookeeper/data
dataLogDir=/home/data/zookeeper/log
server.1=hello1:2888:3888
server.2=hello2:2888:3888
5.鍒涘緩server琛ㄧず絎︽枃浠
touch /home/data/zookeeper/data/myid
echo echo 1>/home/data/zookeeper/data/myid
6.澶嶅埗瀹夎呭寘鍜屾暟鎹鐩褰曞埌hello2
scp -r /home/es/zookeeper-3.4.8 es@hello2:/home/es
scp -r /home/data/zookeeper es@hello2:/home/data
scp /etc/profile es@hello2:/etc
鐧誨綍鍒癶ello2涓
cd /home/es
ln -s zookeeper-3.4.8 zookeeper
echo echo 2>/home/data/zookeeper/data/myid
鎵ц
source /etc/profile
7.涓ゅ彴鏈哄櫒涓婂垎鍒鎵ц
zkServer.sh start
8.楠岃瘉
jps | grep QuorumPeerMain,鏌ョ湅鏄鍚︽湁璇ヨ繘紼
zkServer.sh status,鏌ョ湅鏈嶅姟鐘舵
鍏銆佸畨瑁卥afka
1.瑙e帇kafka瀹夎呭寘鍒版寚瀹氱洰褰曪紙/home/es錛
tar -zxvf kafka_2.10-0.10.2.1.tgz -C /home/es
2.鍒涘緩紼嬪簭杞榪炴帴
cd /home/es/
ln -s kafka_2.10-0.10.2.1 kafka
3.淇鏀歸厤緗鏂囦歡
澶囦喚錛
cp config/server.properties config/server.properties.bak
鍒涘緩kafka鏃ュ織鐩褰曪細
mkdir /home/data/kafka
mkdir /home/data/kafka/kafka-logs
淇鏀:config/server.properties,鍏蜂綋瀵瑰簲瀛楁靛備笅錛
broker.id=0
delete.topic.enable=true
num.network.threads=10
num.io.threads=32
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/home/data/kafka/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=hello1:2181,hello2:2181
zookeeper.connection.timeout.ms=6000
6.澶嶅埗瀹夎呭寘鍜屾暟鎹鐩褰曞埌hello2
scp -r /home/es/kafka_2.10-0.10.2.1 es@hello2:/home/es
scp -r /home/data/kafka es@hello2:/home/data
淇鏀筯ello2涓鐨勯厤緗
鐧誨綍鍒癶ello2涓婏紝cd /home/es/kafka,淇鏀筩onfig/server.properties涓璪roker.id鍊間負2.
7.鍚鍔╧afka
鍦ㄤ袱鍙版満鍣ㄧ殑/home/es/kafka涓錛屽壋寤轟竴涓鏃ュ織瀛樻斁鐩褰曪細mkdir start_log錛屾墽琛屼互涓嬪懡浠わ細
nohup bin/kafka-server-start.sh config/server.properties > start_log/kafka_start_log 2>&1 &
8.楠岃瘉榪愯屾儏鍐
jps | grep Kafka,鏌ョ湅榪涚▼
閫氳繃kafka鍛戒護鏌ョ湅topic銆
涓冦佸畨瑁卙adoop
1.瑙e帇hadoop瀹夎呭寘鍒版寚瀹氱洰褰曪紙/home/es錛
tar -zxvf hadoop-2.7.0.tar.gz -C /home/es
2.鍒涘緩紼嬪簭杞榪炴帴
cd /home/es/
ln -s hadoop-2.7.0 hadoop
3.鍒涘緩鏁版嵁瀛樻斁鐩褰
mkdir /home/data/hadoop
mkdir /home/data/hadoop/tmp
mkdir /home/data/hadoop/dfs
mkdir /home/data/hadoop/dfs/data
mkdir /home/data/hadoop/dfs/name
4.淇鏀歸厤緗鏂囦歡
淇鏀/home/es/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hello1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/data/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
淇鏀/home/es/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/data/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/data/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hello1:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
淇鏀/home/es/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>maprece.jobhistory.address</name>
<value>hello1:10020</value>
</property>
<property>
<name>maprece.jobhistory.webapp.address</name>
<value>hello1:19888</value>
</property>
</configuration>
淇鏀/home/es/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.maprece.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hello1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheler.address</name>
<value>hello1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hello1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hello1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hello1:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>768</value>
</property>
</configuration>
閰嶇疆/home/es/hadoop/etc/hadoop鐩褰曚笅hadoop-env.sh銆亂arn-env.sh鐨凧AVA_HOME錛堜笉璁劇疆鐨勮瘽錛屽惎鍔ㄤ笉浜嗭級
export JAVA_HOME=/usr/java/jdk1.8.0_171
閰嶇疆/home/es/hadoop/etc/hadoop鐩褰曚笅鐨剆laves錛屽垹闄ら粯璁ょ殑localhost錛屽炲姞2涓浠庤妭鐐癸紝
hello1
hello2
5銆佸皢閰嶇疆濂界殑Hadoop澶嶅埗鍒板悇涓鑺傜偣瀵瑰簲浣嶇疆涓婏紝閫氳繃scp浼犻
scp -r /home/es/hadoop-2.7.0 hello2:/home/es/
scp -r /home/data/hadoop hello2:/home/data/
鐧誨綍鍒癶ello2涓婏紝榪涘叆/home/es鐩褰
鎵ц岋細 ln -s hadoop-2.7.0 hadoop
6銆佹牸寮忓寲nameNode鍙婂惎鍔╤adoop
鍦ㄤ富鏈嶅姟鍣ㄥ惎鍔╤adoop錛屼粠鑺傜偣浼氳嚜鍔ㄥ惎鍔錛岃繘鍏/home/es/hadoop鐩褰
鍒濆嬪寲錛岃緭鍏ュ懡浠わ紝bin/hdfs namenode -format
鍏ㄩ儴鍚鍔╯bin/start-all.sh錛屼篃鍙浠ュ垎寮sbin/start-dfs.sh銆乻bin/start-yarn.sh
杈撳叆鍛戒護錛宩ps錛屽彲浠ョ湅鍒扮浉鍏充俊鎮
7銆侀獙璇乭adoop榪愯屾儏鍐
嫻忚堝櫒鎵撳紑http://hello1:8088/
嫻忚堝櫒鎵撳紑http://hello1:50070/
8銆佹坊鍔爃adoop鐜澧冨彉閲忓埌/etc/profile
export HADOOP_HOME=/home/es/hadoop export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
鎵ц岋細 source /etc/profile
鍏銆佸畨瑁匟base
1.瑙e帇hbase瀹夎呭寘鍒版寚瀹氱洰褰曪紙/home/es錛
tar -zxvf hbase-1.2.6-bin.tar.gz -C /home/es
2.鍒涘緩紼嬪簭杞榪炴帴
cd /home/es/
ln -s hbase-1.2.6 hbase
3.娣誨姞hbase鐜澧冨彉閲忓埌/etc/profile
export HBASE_HOME=/home/es/hbase
銆銆export PATH=$HBASE_HOME/bin:$PATH
鎵ц岋細source /etc/profile
4.淇鏀笻BASE閰嶇疆鏂囦歡
vi /home/es/hbase/conf/hbase-env.sh
澧炲姞錛 export JAVA_HOME=/usr/java/jdk1.8.0_171
淇鏀癸細 export HBASE_MANAGES_ZK=false
vi /home/es/hbase/conf/hbase-site.xml
淇鏀圭被瀹癸細
<configuration>
<property>
銆銆銆銆銆銆銆銆<name>hbase.rootdir</name> <!-- hbase瀛樻斁鏁版嵁鐩褰 -->
銆銆銆銆銆銆銆銆<value>hdfs://hello1:9000/hbase/hbase_db</value>
銆銆銆銆銆銆銆銆<!-- 絝鍙h佸拰Hadoop鐨刦s.defaultFS絝鍙d竴鑷-->
銆銆銆銆銆銆</property>
銆銆銆銆銆銆<property>
銆銆銆銆銆銆銆銆<name>hbase.cluster.distributed</name> <!-- 鏄鍚﹀垎甯冨紡閮ㄧ講 -->
銆銆銆銆銆銆銆銆<value>true</value>
銆銆銆銆銆銆</property>
銆銆銆銆銆銆<property>
銆銆銆銆銆銆銆銆<name>hbase.zookeeper.quorum</name> <!-- list of zookooper -->
銆銆銆銆銆銆銆銆<value>hello1,hello2</value>
銆銆銆銆銆銆</property>
銆銆銆銆銆銆銆<property><!--zookooper閰嶇疆銆佹棩蹇楃瓑鐨勫瓨鍌ㄤ綅緗 -->
銆銆銆銆銆銆銆銆銆銆<name>hbase.zookeeper.property.dataDir</name>
銆銆銆銆銆銆銆銆銆銆<value>/home/es/hbase/zookeeper</value>
銆銆銆銆銆銆銆</property>
</configuration>
閰嶇疆regionservers錛寁i /home/es/hbase/conf/regionservers
鍘繪帀榛樿ょ殑localhost錛屽姞鍏hello1銆乭ello2
5銆佸皢閰嶇疆濂界殑hbase澶嶅埗鍒板悇涓鑺傜偣瀵瑰簲浣嶇疆涓婏紝閫氳繃scp浼犻
scp -r /home/es/hbase-1.2.6 hello2:/home/es/
scp /etc/profile hello2:/etc/
鐧誨綍鍒癶ello2涓婏紝榪涘叆/home/es鐩褰
鎵ц岋細 ln -s hbase-1.2.6 hbase
source /etc/profile
6銆乭base鐨勫惎鍔
hello1涓鎵ц岋細 start-hbase.sh
7銆侀獙璇乭base榪愯屾儏鍐
杈撳叆jps鍛戒護鏌ョ湅榪涚▼鏄鍚﹀惎鍔ㄦ垚鍔燂紝鑻 hello1涓婂嚭鐜癏Master銆丠RegionServer銆丠QuormPeer錛宧ello2涓婂嚭鐜癏RegionServer銆丠QuorumPeer錛屽氨鏄鍚鍔ㄦ垚鍔熶簡銆
杈撳叆hbase shell 鍛戒護 榪涘叆hbase鍛戒護妯″紡錛岃緭鍏status鍛戒護錛屾煡鐪嬭繍琛岀姸鎬併
鍦ㄦ祻瑙堝櫒涓杈撳叆http://hello1:16010灝卞彲浠ュ湪鐣岄潰涓婄湅鍒癶base鐨勯厤緗
娉ㄦ剰浜嬮」錛
姝e父瀹夎呭悗錛屽壋寤烘櫘閫氫笉甯﹀帇緙╄〃鍙浠ユe父璇誨啓錛屽綋浣跨敤snappy榪涜屽帇緙╁壋寤鴻〃鏃訛紝璇ヨ〃鏃犳硶鍐峳egionServer涓鍚鍔錛
瑙e喅鏂規硶錛
1.鍦╤base-site.xml鏂囦歡涓娣誨姞涓涓嬪睘鎬
<property>
<name>hbase.regionserver.codecs</name>
<value>snappy</value>
</property>
2.姣忓彴鏈哄櫒涓灝唄adoop_native.zip瑙e帇緙╁埌hbase瀹夎呯洰褰曠殑lib涓嬶紝鎵ц unzip hadoop_native.zip $HBASE_HOME/lib/
3.鍦$HBASE_HOME/conf/hbase-env.sh 涓娣誨姞錛歟xport HBASE_LIBRARY_PATH=/home/es/hbase/lib/native
4.閲嶅惎Hbase鏈嶅姟鍗沖彲
涔濄丼park瀹夎
1.瑙e帇hbase瀹夎呭寘鍒版寚瀹氱洰褰曪紙/home/es錛
tar -zxvf spark2.1.0hadoop2.6.tgz.gz -C /home/es
2.鍒涘緩紼嬪簭杞榪炴帴
cd /home/es/
ln -s spark2.1.0hadoop2.6 spark
3.淇鏀歸厤緗鏂囦歡
mv /home/es/spark/conf/spark-env.sh.template /home/es/spark/conf/spark-env.sh
vi /home/es/spark/conf/spark-env.sh
淇鏀瑰瑰簲閰嶇疆錛
export JAVA_HOME=/usr/java/jdk1.8.0_171
export SPARK_MASTER_IP=hello1
export SPARK_MASTER_PORT=7077
export SPARK_LOCAL_IP=hello1
淇鏀箂laves鏂囦歡
mv /home/es/spark/conf/slaves.template /home/es/spark/conf/slaves
vi /home/es/spark/conf/slaves
灝唋ocalhost淇鏀規垚錛
hello1
hello2
5銆佸皢閰嶇疆濂界殑hbase澶嶅埗鍒板悇涓鑺傜偣瀵瑰簲浣嶇疆涓婏紝閫氳繃scp浼犻
scp -r /home/es/spark2.1.0hadoop2.6 hello2:/home/es/
鐧誨綍鍒癶ello2涓婏紝榪涘叆/home/es鐩褰
鎵ц岋細 ln -s spark2.1.0hadoop2.6 spark
鍦╤ello2涓淇鏀/home/es/spark/conf/spark-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_171
export SPARK_MASTER_IP=hello1
export SPARK_MASTER_PORT=7077
export SPARK_LOCAL_IP=hello2
6銆佸惎鍔╯park
cd /home/es/spark
鎵ц岋細 sbin/start-all.sh
7銆佹嫻嬫墽琛岀粨鏋
jps | grep Worker,鐪嬫槸鍚︽湁鐩稿簲鐨勮繘紼嬨
鍗併佸畨瑁卐lasticsearch
鐢變簬elasticsearch錛岀敤root璐︽埛鏃犳硶鍚鍔錛屾晠璇ョ粍浠剁敤es璐︽埛瀹夎
1銆佸垏鎹㈠埌es璐︽埛錛 su es
2銆佽В鍘媓base瀹夎呭寘鍒版寚瀹氱洰褰曪紙/home/es錛
tar -zxvf elasticsearch-6.3.0.tar.gz -C /home/es/
鍒涘緩紼嬪簭杞榪炴帴
cd /home/es/
ln -s elasticsearch-6.3.0 elasticsearch
3銆佷慨鏀歸厤緗鏂囦歡
vi /home/es/elasticsearch/config/elasticsearch.yml
# 闆嗙兢鐨勫悕瀛
cluster.name: crrc-health
# 鑺傜偣鍚嶅瓧
node.name: node-1
# 鏁版嵁瀛樺偍鐩褰曪紙澶氫釜璺寰勭敤閫楀彿鍒嗛殧錛
path.data: /home/data1/elasticsearch/data
# 鏃ュ織鐩褰
path.logs: /home/data1/elasticsearch/logs
#鏈鏈虹殑ip鍦板潃
network.host: hello1
#璁劇疆闆嗙兢涓璵aster鑺傜偣鐨勫垵濮嬪垪琛錛屽彲浠ラ氳繃榪欎簺鑺傜偣鏉ヨ嚜鍔ㄥ彂鐜版柊鍔犲叆闆嗙兢鐨勮妭鐐
discovery.zen.ping.unicast.hosts: ["hello1", "hello2"]
# 璁劇疆鑺傜偣闂翠氦浜掔殑tcp絝鍙o紙闆嗙兢錛,(榛樿9300)
transport.tcp.port: 9300
# 鐩戝惉絝鍙o紙榛樿わ級
http.port: 9200
# 澧炲姞鍙傛暟錛屼嬌head鎻掍歡鍙浠ヨ塊棶es
http.cors.enabled: true
http.cors.allow-origin: "*"
4銆佸壋寤篹lasticsearch鏁版嵁鍜屽瓨鍌ㄧ洰褰
mkdir /home/data1/elasticsearch
mkdir /home/data1/elasticsearch/data
mkdir /home/data1/elasticsearch/logs
5銆佷慨鏀筶inux緋葷粺鐨勯粯璁ょ‖闄愬埗鍙傛暟
鍒囨崲鑷硆oot鐢ㄦ埛錛 su root
vim /etc/security/limits.conf
娣誨姞錛
es soft nofile 65536
es hard nofile 65536
閫鍑篹s鐧誨綍錛岄噸鏂扮敤es璐︽埛鐧誨綍錛屼嬌鐢ㄥ懡浠わ細ulimit -Hn鏌ョ湅紜闄愬埗鍙傛暟銆
vi /etc/sysctl.conf
娣誨姞錛
vm.max_map_count=655360
鎵ц岋細
sysctl -p
6銆佸皢閰嶇疆濂界殑elasticsearch澶嶅埗鍒板悇涓鑺傜偣瀵瑰簲浣嶇疆涓婏紝閫氳繃scp浼犻
scp -r /home/es/elasticsearch-6.3.0 hello2:/home/es/
scp -r /home/data1/elasticsearch hello2:/home/data1/
鐧誨綍鍒癶ello2涓婏紝榪涘叆/home/es鐩褰
鎵ц岋細 ln -s elasticsearch-6.3.0 elasticsearch-6.3.0
鍦╤ello2涓淇鏀/home/es/elasticsearch/config/elasticsearch.yml
淇鏀癸細 network.host: hello2
7銆佸惎鍔╡lasticsearch
浣跨敤es璐︽埛
鎵ц岋細
/home/es/elasticsearch/bin/elasticsearch -d
8銆侀獙璇
鎺у埗鍙頒腑杈撳叆錛歝url http://hello1:9200
4. HbBase可以隨機寫入為什麼還要依賴於HDFS
他們的關系是:hbase是一個內存資料庫,而hdfs是一個存儲空間;是物品和房子的關系。
hdfs只是一個存儲空間,他的完整名字是分布式文件系統。從名字可知他的作用了。hbase是一個內存資料庫,簡單點說hbase把表啊什麼的存在hdfs上。
所以即使HbBase可以隨機,它還是要依賴於HDFS。
希望可以幫到您,感謝您的採納!
5. hbase怎麼用
HBase安裝及簡單使用
通過之前的hadoop0.20.2的安裝並調試成功,接下來我們繼續安裝hbase0.90.5。在安裝hbase0.90.5之前,因為hbase0.90.5隻支持jdk1.6,所以,我把之前的jdk1.8卸載,重新安裝了jdk1.6。
第一步:
首先需要下載hbase0.90.5.tar.gz,並解壓到/home/hadoop/的目錄下,同時將目錄修改為hbase0.90.5
第二步:
替換hadoop核心jar包,主要母的是防止hbase和hadoop版本不同出現兼容問題,造成hmaster啟動異常
將hbase0.90.5/lib目錄中的hadoop-core-0.20-append-r1056497.jar包進行備份後刪除,再將/home/hadoop/hadoop下面的hadoop-0.20.2-core.jar賦值到/home/hadoop/hbase0.90.5目錄下即可
第三步:
編輯配置文件
①/home/hadoop/hbase0.90.5/conf/hbase-env.sh
我們對行鍵'1001'中列族info的列名age賦值24(1001:info:age=>24),插入兩次,會將最後一次的值進行合並,其中,用時間戳來區分。從圖片中的時間戳不同可以看出保存的是最後一次put的內容。