ビッグデータのインタビューの質問(6)---- HBaseのインタビューの質問

「私はみんなに助けはなく、共有、巨大な牛の人工知能のコースにできなかったつまずいた。チュートリアルは、フィクションを見ているよう、ゼロベース、ユーザーフレンドリーな、と非常にユーモラスなだけではない!そう他の人に、あまりにも悪いと思います。ポイントチュートリアルにジャンプすることができます.. "

ビッグデータの収集カタログのインタビュー、クリックしてください

ディレクトリ

1. HBaseのはどのようなことを特徴としていますか?
2. HBaseのとハイブの違いは?
3. HBaseのののrowKeyの設計原理を説明して?
HBaseのスキャン中に記述し、機能的な類似点と相違点を取得し、達成4.?
5. ApacheのHBaseの分割リージョン


1. HBaseのはどのようなことを特徴としていますか?
1) 大:一个表可以有数十亿行,上百万列;
2) 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不
同的行可以有截然不同的列;
3) 面向列:面向列(族)的存储和权限控制,列(族)独立检索;
4) 稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
5) 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时
的时间戳;
6) 数据类型单一:Hbase 中的数据都是字符串,没有类型。
2. HBaseのとハイブの違いは?

ここに画像を挿入説明
1)2は何ですか?
       Apacheのハイブは、データウェアハウスのHadoopインフラストラクチャの上に構築されています。これは、ハイブHQLで使用することができ
       HDFS上に保存されている言語のクエリデータ。HQLは、SQLのような最終的に地図に変換された言語です/ハイブは、SQLクエリを提供しても削減しますが、ハイブクエリをやり取りすることはできません-それはHaoop上のHadoopのバッチを実行することができますので。
       ApacheのHBaseのは、HDFS上で実行キー/バリューシステム、です。そしてハイブは、HBaseのではなく、MapReduceのタスクを実行するので、リアルタイムにそのデータベース上で実行できるのと同じではありません。HBaseのテーブルに分割され、テーブルはさらにカラムクラスタに分割されています。列のクラスタは、スキーマ定義を使用する必要があり、列は(カラムはスキーマ定義を必要とされていない)クラスタ型の列を設定します。例えば、クラスタの「メッセージ」欄には、含まれていてもよい:.「を」、「から 「日付」、「対象」、」 および「各キー/値ペアのボディ」細胞としてのHBaseで定義され、行の各キーを-key、クラスタの列、列、およびタイムスタンプ。HBaseのでは、行は、キー/値のマッピングの集合である、マッピングは一意行キーによって識別されます。HadoopのインフラのHBaseの使用は、一般的な機器の使用の拡張レベルにすることができます。
2)両方の特性
       MapReduceのタスクを実行するためのSQLに精通しているハイブヘルプ人。それはJDBCと互換性がありますが、それはまた一緒に、既存のSQLツールと統合することができますので。それは、テーブルを通過するすべてのデータをデフォルト設定されますので、ファイル名を指定して実行ハイブのクエリは、長い時間がかかります。この欠点にもかかわらず、機構を横切るデータの量は、ハイブを分割することによって制御することができます。パーティショニングが可能にクエリデータセット、異なるファイルに格納されたデータのフォルダ、クエリ時のみ指定されたフォルダのデータを横断する(パーティション)にフィルタリング操作を加えました。この機構は、例えば、唯一のような長いファイル名は、時間形式を含むように、一定の時間範囲内で文書を処理し、使用することができます。
       HBaseのは、キー/値を格納することによって動作します。これは、4つの主要な操作をサポートしています範囲内で追加または更新行、ビュー細胞、指定されたラインへのアクセスは、指定された行、列または行のバージョンを削除します。履歴データ取得するために使用されるバージョン情報(各行の履歴データを削除することができ、その後、のHBaseのコンパクションによってスペースを解放することができます)。HBaseのテーブルを含むが、スキーマは専用フォームクラスターと列に必要とされているが、列にはスキーマを必要としません。HBaseのテーブル備える機能を数える/増します。
3)両方の限界
       ハイブは、現在、更新操作をサポートしていません。また、Hadoopの上でバッチ操作を実行するためにハイブのために、それは彼らが、クエリの結果を得ることができ、数時間、通常数分前に、長時間を要します。ハイブはする事前定義されたスキーマを提供しなければならない
列にファイルやディレクトリをマップし、そしてハイブは、ACIDと互換性がありません。
       HBaseのクエリを再学習する必要がある特定の言語で書かれています。ApacheのPhonenixによるSQLのような機能を実現しますが、スキーマを犠牲にして提供されなければなりません。それはいくつかの機能をサポートしていますが、加えて、HBaseのは、また、すべてのACID特性と互換性がありません。最後に、最も重要ではない-のHBaseを実行するために、飼育係をする必要があります、飼育係は、構成サービス、メンテナンス、メタ情報サービスの名前空間を含めたサービスの分散協調のために使用されています。
4)両方のシナリオ
       時間クエリに対するデータ分析のための適切なハイブは、例えば、ログまたはサイトの傾向を計算するために使用されます。
       ハイブは、リアルタイムクエリのために使用すべきではありません。それは長い時間がかかるため、彼らは結果を返すことができます前に。
       HBaseのリアルタイム問合せ大規模なデータのために非常に適しています。Facebookのメッセージや行動リアルタイム分析のHBase。また、Facebookの接続の数をカウントするために使用することができます。
5)まとめた
       ハイブとのHadoopベースのHBaseを-Hiveは、SQLのようなエンジンと実行のMapReduceタスクである二つの異なる技術が、HBaseのはHadoopの、キー/谷データベースのNoSQLのの上の一種です。もちろん、これらの2つのツールを同時に使用することができます。Googleが検索すると、Facebookなどと交流のように、ハイブは、統計照会のために使用することができ、HBaseのは、リアルタイムクエリに使用することができ、データはハイブHBaseのから書かれ、その後、HBaseのハイブからライトバックを設定することができます。

3. HBaseのののrowKeyの設計原理を説明して?

1)のrowKey長原理
       のrowKeyがバイナリストリームである、のrowKeyの長さは、多くの開発者の10〜100バイトで設計が、提案はできるだけ短い、以上16バイトであることが示唆されて。次の理由の場合:

1) 大:一个表可以有数十亿行,上百万列;
2) 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不
同的行可以有截然不同的列;
3) 面向列:面向列(族)的存储和权限控制,列(族)独立检索;
4) 稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
5) 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时
的时间戳;
6) 数据类型单一:Hbase 中的数据都是字符串,没有类型。

2)Rowkey 散列原则
       如果Rowkey 是按时间戳的方式递增,不要将时间放在二进制码的前面,建议将Rowkey 的高位作为散列字段,由程序循环生成,低位放时间字段,这样将提高数据均衡分布在每个Regionserver 实现负载均衡的几率。如果没有散列字段,首字段直接是时间信息将产生所有新数据都在一个RegionServer上堆积的热点现象,这样在做数据检索的时候负载将会集中在个别RegionServer,降低查询效率。
3)Rowkey 唯一原则
       必须在设计上保证其唯一性。

4. 描述HBase 中scan 和get 的功能以及实现的异同?

HBase 的查询实现只提供两种方式:
1) 按指定RowKey 获取唯一一条记录,
get 方法(org.apache.hadoop.hbase.client.Get)

       Get 的方法处理分两种: 设置了ClosestRowBefore 和没有设置ClosestRowBefore 的rowlock。主要是用来保证行的事务性,即每个get 是以一个row 来标记的。一个row 中可以有很多family和column。
2) 按指定的条件获取一批记录,
scan 方法(org.apache.Hadoop.hbase.client.Scan)实现条件查询功能

使用的就是scan 方式。
(1)scan 可以通过setCaching 与setBatch 方法提高速度(以空间换时间);
(2)scan 可以通过setStartRow 与setEndRow 来限定范围([start,end)start 是闭区间,end 是开区
间)。范围越小,性能越高。
(3)scan 可以通过setFilter 方法添加过滤器,这也是分页、多条件查询的基础。
发布了422 篇原创文章 · 获赞 357 · 访问量 124万+

おすすめ

転載: blog.csdn.net/silentwolfyh/article/details/103864901