hadoopとhbaseの関係、およびhbaseのインストールと検証

hadoop公式ウェブサイトのホームページからわかるように、hadoopプロジェクトに付属する次の5つのモジュールがあります。

hadoop共通
hdfs
ヤーン
マップ
Reduce hadoop Ozone

名前からわかる最初の項目は、基本的な機能モジュール、hdfsはファイルストレージシステム、yarnはスケジューリングとクラスター管理、mapReduceはデータの計算と処理です。これらは、hadoopの使用法の学習の開始に必然的に接触するものです。
最後のHadoop Ozoneは分散オブジェクトストレージシステムです。これはhdfsの補足です。比較的新しいコンテンツです。人々の口には比較的まれにしか表示されません。私を含め、多くの人は最初はそれを知らないかもしれません。

ここから、ビッグデータについて聞く人は一般に、実際にはhadoopプロジェクト自体ではなく、hadoopに基づいて使用できる他の関連プロジェクトであるhbase、hive、sparkなどについて聞くことがわかります。
Hadoop自体のモジュールについては、対応するバージョンのHadoopがサポートしている限り、Hadoopがインストールされている限り、これらのモジュール機能を使用できます。関連するプロジェクトを個別にインストールしてデプロイし、構成に関連付ける必要があります。

Hadoopは多くのことを実行できますが、それについて言及するときは、初めてビッグデータについて考える必要があり、ビッグデータに関しては、データ処理、計算、およびデータストレージについて考える必要があります。
最初にhadoop Ozoneを脇に置いておくと、私が現在知っているビッグデータシステムのデータストレージをhdfsやhbaseから分離することはできません。個人的に理解すると、hbaseはある意味でhdfsの補足と見なすことができます。これを理解すれば、hdfsはファイルの内容の変更をサポートしていないことがわかり、欠点だけでなく利点もあるはずです。
データベースは最終的にはファイルの形式で保存されることがわかっています。mysql、mongodb、hbaseのいずれであっても、hbaseの現在の基礎となるファイルシステムはhdfsでサポートされています。問題がないことを確認しましたが、インターネットでは他のファイルシステムに変更することも可能です。問題ありません。これにはさらに検証が必要です。
上記のアイデアに基づいて、最初にhdfsを学習した後は、hbaseの基本的なリテラシー、インストール、構成、および基本的な操作である必要があります。

hbaseダウンロード

Hbaseは、公式Webサイトからインストールパッケージのダウンロードページhttp://hbase.apache.org/downloads.htmlを見つけることができます。このページには、多くのバージョンがリストされています。リリースノートを確認すると、バージョン2.2.5はすでにバージョン3.2.xをサポートしていることがわかりますhadoop、そして私のhadoopは3.1.3なので、このバージョンを選択しました。
RedisのインストールとHadoopのインストールに関する記事に記載されている、インストールパッケージを取得する方法はたくさんあります。知りたい場合は、
Hadoopインストール環境の準備と関連知識の分析に移動できます。Linuxでの
Redisインストールとソフトウェアインストールに関連するLinuxナレッジポイント
ここで直接説明します最速の方法を使用してください:

wget https://downloads.apache.org/hbase/2.2.5/hbase-2.2.5-bin.tar.gz

解凍

tar -zxvf hbase-2.2.5-bin.tar.gz

hbase-env.sh構成

解凍後に時間内に構成します。構成する最初のことは、インストールディレクトリのconfディレクトリにあるファイルhbase-env.shです。たとえば、私のhbaseインストールディレクトリがの/root/soft/bigdata/hbase/hbase-2.2.5場合、ファイルパスは/root/soft/bigdata/hbase/hbase-2.2.5/conf/hbase-env.shです。ファイルは次のように構成する必要があります

export JAVA_HOME=/root/soft/jdk1.8.0_261
export HBASE_CLASSPATH=/root/soft/bigdata/hbase/hbase-2.2.5/conf
export HBASE_MANAGES_ZK=true

実際の操作は、独自のjdkおよびhbaseのインストールパスを置き換えることであることに注意してください。

hbase-sit.xml構成

次に、hbase-sit.xmlを構成します。ここでは、hbase hdfsシステムデータを格納するディレクトリを指定する必要があります。私のhadoop分散モードのため、構成は分散モードもオンにする必要があり、これらの構成を配置<configuration>して</configuration>中間にする必要があります。

<property>
      <name>hbase.rootdir</name>
      <value>hdfs://192.168.139.9:9000/hbase</value>
</property>
<property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
</property>
<!--
<property>
      <name>hbase.tmp.dir</name>
      <value>./tmp</value>
</property>
-->
<property>
      <name>hbase.unsafe.stream.capability.enforce</name>
      <value>false</value>
</property>

上記のいくつかの構成のうち、最初の1つは私が構築したhdfsファイルシステムを指しています。hbaseはまだ存在しないディレクトリであり、その後の使用時に自動的に作成されます。
2番目の構成は、私のhadoop分散モード構成用です。hbaseは、この構成をデフォルトでfalseに設定します。つまり、スタンドアロンモードです。
3番目の項目は一時ディレクトリのようです。hbase構成ファイルには元々付属していますが、当面はその有用性がわかりません。最初にコメントします。
4番目の項目は、hbase構成ファイルにも含まれています。オンラインの説明を見ると、起動エラーを回避するためのものです。今は変更しないでおきます。

hbase環境変数の構成

これは、操作をより便利にすることができる習慣的な操作です。どのディレクトリでもhbase関連のコマンドを実行でき、設定したくない場合は設定する必要はありません。

export HBASE_HOME=/root/soft/bigdata/hbase/hbase-2.2.5
export PATH=$PATH:$HBASE_HOME/bin

ServerNotRunningYetException

オンラインチュートリアルによると、hadoopが開始されていれば、上記の構成で開始できます。
hadoopを起動した後、hbase起動コマンドを実行したところstart-hbase.sh、結果がエラーであることがわかりました。

ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet 

インターネットを検索して、hdfsがセーフモードを開いたことが原因であると述べましたがhdfs dfsadmin -safemode get、hdfsセーフモードのステータス確認したところ、ここで閉じられたことがわかりました。このエラーの原因は、これよりも多いはずです。(注:手動でオンまたはオフhdfs dfsadmin -safemode enterできますhdfs dfsadmin -safemode leave
したがって、hbaseの起動ログを確認したところ、ついに私が不注意であることがわかりました。hdfsのIPを構成するときに、誤って192.168.139.9入力されました。IPを12.168.139.9正しいものに変更した後、成功しました。起動。

複数のSLF4Jバインディング

hbaseは正常に起動しましたが、起動するとアラームが表示されました。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/soft/bigdata/hadoop/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]

このリマインダーはまだ非常に明確です。つまり、hbaseとhadoop関連のログの依存関係が競合しているため、hbaseのログjarの名前を変更しましたが、問題はありませんでした。

検証

シェル接続

mysql、mongodb、redisのようにhbaseが正常に起動すると、hbaseには独自のシェルクライアントツールがあり、接続して操作できます。

hbase shell

上記のコマンドを実行すると、hbaseのコマンドラインインターフェイスに入ることができますが、これは私のマシンが原因である可能性があり、入力に時間がかかります。

テーブルを作成

hbaseでテーブル構造を作成する簡単な操作は次のとおりです。

create 'user','name','age','addr','phone','email'

上記のコマンドの意味は、name、age、addr、phone、emailなどの属性を含むuserという名前のテーブルを作成することです。

マスターが初期化しています

上記のテーブルを作成すると、エピソードが発生し、最初の作成中に次の例外がスローされました。

ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
        at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2811)
        at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2018)
        at 

文字通り、マスターが起動しているので、しばらく待ってから再実行すると、正常に作成されました。

テーブル構造を見る

hbaseテーブルを作成した後、describeコマンドを使用してテーブル構造を表示できます。次に例を示します。

describe 'user'

上記の私のコマンドの出力は次のとおりです。

Table user is ENABLED                                                       
user                                                                        
COLUMN FAMILIES DESCRIPTION                                                 
{NAME => 'addr', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERS
ION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE 
=> 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS =>
 '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE =
> 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_
BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOC
KSIZE => '65536'}                                                           
{NAME => 'age', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSI
ON_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE =
> 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => 
'0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE =>
 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_B
LOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCK
SIZE => '65536'}                                                            
{NAME => 'email', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VER
SION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE
 => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS =
> '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE 
=> 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH
_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLO
CKSIZE => '65536'}                                                          
{NAME => 'name', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERS
ION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE 
=> 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS =>
 '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE =
> 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_
BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOC
KSIZE => '65536'}                                                           
{NAME => 'phone', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VER
SION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE
 => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS =
> '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE 
=> 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH
_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLO
CKSIZE => '65536'}                                                          
5 row(s)
QUOTAS                                                                      
0 row(s)
Took 4.6373 seconds                     

これまでのところ、hbaseのインストール構成が実際に利用可能であることを証明しています。

hbaseを停止する

hbaseの停止は、もともと非常に単純です。開始するとstart-hbase.sh、通常は停止すると言われていますstop-hbase.shが、実際には停止しています。
ところが、立ち止まるとちょっとした問題があり、初めて止まったときはいつも止まっている状態でした。
最初に実行する必要があるとインターネットから言われましたが、hbase-daemons.sh stop regionserver試してみたところ効果はありましたがstop-hbase.sh、すぐに実行が停止しましたが、この現象は一度だけ現れ、stop-hbase.shその後は毎回素早く停止しました。

上記の部分については、次の記事を参照してください。http
//dblab.xmu.edu.cn/blog/2442-2/

おすすめ

転載: blog.csdn.net/tuzongxun/article/details/107915720