SlideShare a Scribd company logo
1 of 18
Download to read offline
takemikami’s note – http://takemikami.com/
三上 威 (フリーランスITエンジニア) twitter: @takemikami
Apache HBase バルクロードの使い方
HBaseバルクロードの実施方法・仕組み・実施時の注意点
1
HBase Hadoop
2017/2/14
Copyright (C) 2017 Takeshi Mikami. All rights reserved.
takemikami’s note – http://takemikami.com/
アジェンダ
• バルクロードの全体像
• バルクロードの実施方法
• HBaseのテーブルの理解 〜regionについて
• バルクロードの仕組み
• バルクロード実施時の注意点
2Copyright (C) 2017 Takeshi Mikami. All rights reserved.
takemikami’s note – http://takemikami.com/
• HBaseのバルクロードは2stepで実施
– importtsv
mapreduceでtsvファイルをHFile (HBaseの内部形式)に変換
– completebulkload
HFileをHBaseのテーブルにロード
バルクロードの全体像
3Copyright (C) 2017 Takeshi Mikami. All rights reserved.
HBaseのバルクロード全体の流れについて説明します。
tsv
ファイル
HFile HBase
table
importtsv
complete
bulkload
Step1 Step2
→本資料では、HBaseのバルクロードの実施方法・仕組み・実施時の注意点を説明します。
takemikami’s note – http://takemikami.com/
バルクロードの実施方法 〜1.tsvファイルの準備
• 例として、次の形式のデータをロードする流れを説明します
– キーに2桁の数字を持つ
– 属性に名前(name)・年齢(age)を持つ
• 次のカラムを持つtsvファイルを作成
– キー、名前、年齢
• HDFSにtsvをupload
4Copyright (C) 2017 Takeshi Mikami. All rights reserved.
HBaseのバルクロードの実施方法を示します。
$ hadoop fs -mkdir /tmp/sample/tsv
$ hadoop fs -put sample.tsv /tmp/sample/tsv/0001
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
↑tsvファイルのイメージ
takemikami’s note – http://takemikami.com/
バルクロードの実施方法 〜2.importtsvの実行
• importtsvを実行し、tsvからHFileに変換
5Copyright (C) 2017 Takeshi Mikami. All rights reserved.
HBaseのバルクロードの実施方法を示します。
$ hbase org.apache.hadoop.hbase.mapreduce.ImportTsv ¥
-Dimporttsv.columns=HBASE_ROW_KEY,name,age ¥
-Dimporttsv.bulk.output=hdfs:///tmp/sample/hfile ¥
sampletable hdfs:///tmp/sample/tsv
テーブルの
カラム名リスト
HFileの出力先
入力tsvファイルの格納先
テーブル名
tsv
ファイル
HFile HBase
table
importtsv
complete
bulkload
Step1 Step2
takemikami’s note – http://takemikami.com/
バルクロードの実施方法 〜3.completebulkloadの実行
• completebulkloadを実行し、HBaseのテーブルにロード
6Copyright (C) 2017 Takeshi Mikami. All rights reserved.
HBaseのバルクロードの実施方法を示します。
$ hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles ¥
hdfs:///tmp/sample/hfile sampletable
テーブル名
HFileの格納先
tsv
ファイル
HFile HBase
table
importtsv
complete
bulkload
Step1 Step2
takemikami’s note – http://takemikami.com/
Rowキー カラム タイムスタンプ 値
03 名前 1484890815454 佐藤
03 年齢 1484890815454 32
12 名前 1484890815454 山田
12 年齢 1484890815454 47
15 名前 1484890815454 山本
15 年齢 1484890815454 21
76 名前 1484890815454 鈴木
76 年齢 1484890815454 25
95 名前 1484890815454 高橋
95 年齢 1484890815454 18
HBaseのテーブルの理解 〜tableとregion
7Copyright (C) 2017 Takeshi Mikami. All rights reserved.
HBaseのテーブルのregionについて説明します。
• HBaseのテーブルは、Rowキー・カラム・タイムスタンプに対して1つの値を持つ構造
• データはRowキーの範囲で分割し保存される(分割された単位をRegionと呼ぶ)
Region①
00〜50
注:columnfamilyの説明は省きます。
Region②
51〜99
takemikami’s note – http://takemikami.com/
Rowキー カラム タイムスタンプ 値
03 名前 1484890815454 佐藤
03 年齢 1484890815454 32
12 名前 1484890815454 山田
12 年齢 1484890815454 47
15 名前 1484890815454 山本
15 年齢 1484890815454 21
76 名前 1484890815454 鈴木
76 年齢 1484890815454 25
95 名前 1484890815454 高橋
95 年齢 1484890815454 18
HBaseのテーブルの理解 〜regionの分割
8Copyright (C) 2017 Takeshi Mikami. All rights reserved.
HBaseのテーブルのregionの分割について説明します。
• Region内のデータサイズが閾値を超えると、Regionがsplit(分割)されます。
(明示的にコマンドを入力してsplitすることも可能)
Region①
00〜50
Region②
51〜99
Region①
00〜14
Region②
15〜50
Region③
51〜99
データ量が閾値を
超えると、split
データ量が閾値を
超えると、split
takemikami’s note – http://takemikami.com/
HBaseのテーブルの理解 〜region状態の確認
9Copyright (C) 2017 Takeshi Mikami. All rights reserved.
HBaseのテーブルのregion分割状態の確認方法について説明します。
• テーブルがどんなRegionに分割されているかは、HBaseのメタ情報から確認
hbase> scan ‘hbase:meta’,{FILTER=>“PrefixFilter(‘※テーブル名※’)"}
column=info:regioninfo, ・・・・, value={・・・・, STARTKEY => '00', ENDKEY => '50'}
■コマンド
■結果
各regionの開始・終了位置各regionの開始・終了位置
takemikami’s note – http://takemikami.com/
バルクロードの仕組み
10Copyright (C) 2017 Takeshi Mikami. All rights reserved.
TSV
TSV
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
キー 値
76 名前:鈴木, 年齢:25
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
25 ・・・
Map
Shuffle
キー 値
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
15 名前:山本, 年齢:21
25 ・・・
HFile
キー 値
95 名前:高橋, 年齢:18
76 名前:鈴木, 年齢:25
65 ・・・
キー 名前 年齢
95 高橋 18
15 山本 21
65 ・・・ ・・・
キー 値
95 名前:高橋, 年齢:18
15 名前:山本, 年齢:21
65 ・・・
Map
HFile
Reduce
Reduce
Region②
51〜100
Complete
BulkLoad
Complete
BulkLoad
バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。
compltebulkload
HBase
importtsv
step1
mapreduceでtsvファイルを
HFile (HBaseの内部形式)に変換
Region①
00〜50step2
HFileを
HBaseテーブルに
ロード
バルクロードは、この2stepで実施
次スライドから順を追って説明します
takemikami’s note – http://takemikami.com/
バルクロードの仕組み 1. tsvファイルの準備
11Copyright (C) 2017 Takeshi Mikami. All rights reserved.
TSV
TSV
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
キー 値
76 名前:鈴木, 年齢:25
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
25 ・・・
Map
Shuffle
キー 値
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
15 名前:山本, 年齢:21
25 ・・・
HFile
キー 値
95 名前:高橋, 年齢:18
76 名前:鈴木, 年齢:25
65 ・・・
キー 名前 年齢
95 高橋 18
15 山本 21
65 ・・・ ・・・
キー 値
95 名前:高橋, 年齢:18
15 名前:山本, 年齢:21
65 ・・・
Map
HFile
Reduce
Reduce
Region①
00〜50
Region②
51〜100
Complete
BulkLoad
Complete
BulkLoad
バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。
CompleteBulkLoad
HBase
ImportTSV
HDFSに入力TSVファイルをアップロードします
takemikami’s note – http://takemikami.com/
バルクロードの仕組み 2. mapper/reducerの起動
12Copyright (C) 2017 Takeshi Mikami. All rights reserved.
TSV
TSV
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
キー 値
76 名前:鈴木, 年齢:25
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
25 ・・・
Map
Shuffle
キー 値
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
15 名前:山本, 年齢:21
25 ・・・
HFile
キー 値
95 名前:高橋, 年齢:18
76 名前:鈴木, 年齢:25
65 ・・・
キー 名前 年齢
95 高橋 18
15 山本 21
65 ・・・ ・・・
キー 値
95 名前:高橋, 年齢:18
15 名前:山本, 年齢:21
65 ・・・
Map
HFile
Reduce
Reduce
Region①
00〜50
Region②
51〜100
Complete
BulkLoad
Complete
BulkLoad
バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。
CompleteBulkLoad
HBase
ImportTSV
入力TSVファイル数に応じた数の
mapperを起動します
インポート先テーブルのRegion数の
Reducerを起動します
Regionが2つであれば、
Reducerも2つ
Regionが2つであれば、
Reducerも2つ
takemikami’s note – http://takemikami.com/
バルクロードの仕組み 3.map処理
13Copyright (C) 2017 Takeshi Mikami. All rights reserved.
TSV
TSV
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
キー 値
76 名前:鈴木, 年齢:25
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
25 ・・・
Map
Shuffle
キー 値
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
15 名前:山本, 年齢:21
25 ・・・
HFile
キー 値
95 名前:高橋, 年齢:18
76 名前:鈴木, 年齢:25
65 ・・・
キー 名前 年齢
95 高橋 18
15 山本 21
65 ・・・ ・・・
キー 値
95 名前:高橋, 年齢:18
15 名前:山本, 年齢:21
65 ・・・
Map
HFile
Reduce
Reduce
Region①
00〜50
Region②
51〜100
Complete
BulkLoad
Complete
BulkLoad
バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。
CompleteBulkLoad
HBase
ImportTSV
入力TSVファイル数を
インポート先テーブルの「キー」と「属性値のMap」
の形式にmapします
takemikami’s note – http://takemikami.com/
バルクロードの仕組み 4.shuffle処理
14Copyright (C) 2017 Takeshi Mikami. All rights reserved.
TSV
TSV
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
キー 値
76 名前:鈴木, 年齢:25
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
25 ・・・
Map
Shuffle
キー 値
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
15 名前:山本, 年齢:21
25 ・・・
HFile
キー 値
95 名前:高橋, 年齢:18
76 名前:鈴木, 年齢:25
65 ・・・
キー 名前 年齢
95 高橋 18
15 山本 21
65 ・・・ ・・・
キー 値
95 名前:高橋, 年齢:18
15 名前:山本, 年齢:21
65 ・・・
Map
HFile
Reduce
Reduce
Region①
00〜50
Region②
51〜100
Complete
BulkLoad
Complete
BulkLoad
バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。
CompleteBulkLoad
HBase
ImportTSV
出力先テーブルの
regionのキー範囲に合わせ、
各reducerにshuffleします
00~50の範囲00~50の範囲
51~100の範囲51~100の範囲
takemikami’s note – http://takemikami.com/
バルクロードの仕組み 5.reduce処理
15Copyright (C) 2017 Takeshi Mikami. All rights reserved.
TSV
TSV
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
キー 値
76 名前:鈴木, 年齢:25
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
25 ・・・
Map
Shuffle
キー 値
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
15 名前:山本, 年齢:21
25 ・・・
HFile
キー 値
95 名前:高橋, 年齢:18
76 名前:鈴木, 年齢:25
65 ・・・
キー 名前 年齢
95 高橋 18
15 山本 21
65 ・・・ ・・・
キー 値
95 名前:高橋, 年齢:18
15 名前:山本, 年齢:21
65 ・・・
Map
HFile
Reduce
Reduce
Region①
00〜50
Region②
51〜100
Complete
BulkLoad
Complete
BulkLoad
バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。
CompleteBulkLoad
HBase
ImportTSV
regionのキー範囲ごとに、
Reduce処理で、
HFileを生成します
takemikami’s note – http://takemikami.com/
バルクロードの仕組み 6.completebulkload処理
16Copyright (C) 2017 Takeshi Mikami. All rights reserved.
TSV
TSV
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
キー 値
76 名前:鈴木, 年齢:25
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
25 ・・・
Map
Shuffle
キー 値
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
15 名前:山本, 年齢:21
25 ・・・
HFile
キー 値
95 名前:高橋, 年齢:18
76 名前:鈴木, 年齢:25
65 ・・・
キー 名前 年齢
95 高橋 18
15 山本 21
65 ・・・ ・・・
キー 値
95 名前:高橋, 年齢:18
15 名前:山本, 年齢:21
65 ・・・
Map
HFile
Reduce
Reduce
Region①
00〜50
Region②
51〜100
Complete
BulkLoad
Complete
BulkLoad
バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。
CompleteBulkLoad
HBase
ImportTSV
各region毎に、
Hfileをテーブルにロードします
takemikami’s note – http://takemikami.com/
バルクロードの仕組み 改めて全体
17Copyright (C) 2017 Takeshi Mikami. All rights reserved.
TSV
TSV
キー 名前 年齢
76 鈴木 25
03 佐藤 32
12 山田 47
25 ・・・ ・・・
キー 値
76 名前:鈴木, 年齢:25
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
25 ・・・
Map
Shuffle
キー 値
03 名前:佐藤, 年齢:32
12 名前:山田, 年齢:47
15 名前:山本, 年齢:21
25 ・・・
HFile
キー 値
95 名前:高橋, 年齢:18
76 名前:鈴木, 年齢:25
65 ・・・
キー 名前 年齢
95 高橋 18
15 山本 21
65 ・・・ ・・・
キー 値
95 名前:高橋, 年齢:18
15 名前:山本, 年齢:21
65 ・・・
Map
HFile
Reduce
Reduce
Region①
00〜50
Region②
51〜100
Complete
BulkLoad
Complete
BulkLoad
バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。
CompleteBulkLoad
HBase
ImportTSV
takemikami’s note – http://takemikami.com/
バルクロード実施時の注意点
• バルクロード実施時、以下のバランスが悪いと問題が生じる
– ①ロードするデータサイズ ②テーブルのregion分割数
18Copyright (C) 2017 Takeshi Mikami. All rights reserved.
バルクロード実施時の注意点を説明します。
『①ロードするデータサイズ > ②テーブルのregion分割数』の場合
ロードするデータがregionに収まりきらず、
completebulkloadの途中で、何度もauto-splitが発生し、ロードに時間がかかる。
『①ロードするデータサイズ < ②テーブルのregion分割数』の場合
region分割数が多いと多数のHFileができる。
テーブルを洗い替え(truncate→complatebulkload)しようとすると、
単一regionにロードできるHFile数の閾値を超えて、エラーになってしまう。
→ (importtsv実行前にregionを手動splitするなど)
ロードするデータサイズとregion数をバランスさせておく必要がある。

More Related Content

What's hot

Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそうTakatoshi Matsuo
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) hamaken
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座Samir Hammoudi
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンKentaro Yoshida
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中Satoshi Noto
 
HBase スキーマ設計のポイント
HBase スキーマ設計のポイントHBase スキーマ設計のポイント
HBase スキーマ設計のポイントdaisuke-a-matsui
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Cloudera Japan
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方歩 柴田
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説貴仁 大和屋
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返りSotaro Kimura
 
サイバージェント 秋葉原ラボのHBase 活用事例
サイバージェント 秋葉原ラボのHBase 活用事例サイバージェント 秋葉原ラボのHBase 活用事例
サイバージェント 秋葉原ラボのHBase 活用事例cyberagent
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)NTT DATA Technology & Innovation
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 

What's hot (20)

Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそう
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 
HBase スキーマ設計のポイント
HBase スキーマ設計のポイントHBase スキーマ設計のポイント
HBase スキーマ設計のポイント
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
SASとHadoopとの連携
SASとHadoopとの連携SASとHadoopとの連携
SASとHadoopとの連携
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
Helidon 概要
Helidon 概要Helidon 概要
Helidon 概要
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
 
サイバージェント 秋葉原ラボのHBase 活用事例
サイバージェント 秋葉原ラボのHBase 活用事例サイバージェント 秋葉原ラボのHBase 活用事例
サイバージェント 秋葉原ラボのHBase 活用事例
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 

More from Takeshi Mikami

rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法Takeshi Mikami
 
適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介Takeshi Mikami
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れTakeshi Mikami
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方Takeshi Mikami
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)Takeshi Mikami
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」Takeshi Mikami
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成Takeshi Mikami
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウTakeshi Mikami
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方Takeshi Mikami
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題Takeshi Mikami
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介Takeshi Mikami
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)Takeshi Mikami
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Takeshi Mikami
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本Takeshi Mikami
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Takeshi Mikami
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Takeshi Mikami
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介Takeshi Mikami
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介Takeshi Mikami
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門Takeshi Mikami
 

More from Takeshi Mikami (20)

rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法
 
適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れ
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
 
SPARQL入門
SPARQL入門SPARQL入門
SPARQL入門
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門
 

Recently uploaded

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Recently uploaded (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

Apache Hbase バルクロードの使い方

  • 1. takemikami’s note – http://takemikami.com/ 三上 威 (フリーランスITエンジニア) twitter: @takemikami Apache HBase バルクロードの使い方 HBaseバルクロードの実施方法・仕組み・実施時の注意点 1 HBase Hadoop 2017/2/14 Copyright (C) 2017 Takeshi Mikami. All rights reserved.
  • 2. takemikami’s note – http://takemikami.com/ アジェンダ • バルクロードの全体像 • バルクロードの実施方法 • HBaseのテーブルの理解 〜regionについて • バルクロードの仕組み • バルクロード実施時の注意点 2Copyright (C) 2017 Takeshi Mikami. All rights reserved.
  • 3. takemikami’s note – http://takemikami.com/ • HBaseのバルクロードは2stepで実施 – importtsv mapreduceでtsvファイルをHFile (HBaseの内部形式)に変換 – completebulkload HFileをHBaseのテーブルにロード バルクロードの全体像 3Copyright (C) 2017 Takeshi Mikami. All rights reserved. HBaseのバルクロード全体の流れについて説明します。 tsv ファイル HFile HBase table importtsv complete bulkload Step1 Step2 →本資料では、HBaseのバルクロードの実施方法・仕組み・実施時の注意点を説明します。
  • 4. takemikami’s note – http://takemikami.com/ バルクロードの実施方法 〜1.tsvファイルの準備 • 例として、次の形式のデータをロードする流れを説明します – キーに2桁の数字を持つ – 属性に名前(name)・年齢(age)を持つ • 次のカラムを持つtsvファイルを作成 – キー、名前、年齢 • HDFSにtsvをupload 4Copyright (C) 2017 Takeshi Mikami. All rights reserved. HBaseのバルクロードの実施方法を示します。 $ hadoop fs -mkdir /tmp/sample/tsv $ hadoop fs -put sample.tsv /tmp/sample/tsv/0001 キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ ↑tsvファイルのイメージ
  • 5. takemikami’s note – http://takemikami.com/ バルクロードの実施方法 〜2.importtsvの実行 • importtsvを実行し、tsvからHFileに変換 5Copyright (C) 2017 Takeshi Mikami. All rights reserved. HBaseのバルクロードの実施方法を示します。 $ hbase org.apache.hadoop.hbase.mapreduce.ImportTsv ¥ -Dimporttsv.columns=HBASE_ROW_KEY,name,age ¥ -Dimporttsv.bulk.output=hdfs:///tmp/sample/hfile ¥ sampletable hdfs:///tmp/sample/tsv テーブルの カラム名リスト HFileの出力先 入力tsvファイルの格納先 テーブル名 tsv ファイル HFile HBase table importtsv complete bulkload Step1 Step2
  • 6. takemikami’s note – http://takemikami.com/ バルクロードの実施方法 〜3.completebulkloadの実行 • completebulkloadを実行し、HBaseのテーブルにロード 6Copyright (C) 2017 Takeshi Mikami. All rights reserved. HBaseのバルクロードの実施方法を示します。 $ hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles ¥ hdfs:///tmp/sample/hfile sampletable テーブル名 HFileの格納先 tsv ファイル HFile HBase table importtsv complete bulkload Step1 Step2
  • 7. takemikami’s note – http://takemikami.com/ Rowキー カラム タイムスタンプ 値 03 名前 1484890815454 佐藤 03 年齢 1484890815454 32 12 名前 1484890815454 山田 12 年齢 1484890815454 47 15 名前 1484890815454 山本 15 年齢 1484890815454 21 76 名前 1484890815454 鈴木 76 年齢 1484890815454 25 95 名前 1484890815454 高橋 95 年齢 1484890815454 18 HBaseのテーブルの理解 〜tableとregion 7Copyright (C) 2017 Takeshi Mikami. All rights reserved. HBaseのテーブルのregionについて説明します。 • HBaseのテーブルは、Rowキー・カラム・タイムスタンプに対して1つの値を持つ構造 • データはRowキーの範囲で分割し保存される(分割された単位をRegionと呼ぶ) Region① 00〜50 注:columnfamilyの説明は省きます。 Region② 51〜99
  • 8. takemikami’s note – http://takemikami.com/ Rowキー カラム タイムスタンプ 値 03 名前 1484890815454 佐藤 03 年齢 1484890815454 32 12 名前 1484890815454 山田 12 年齢 1484890815454 47 15 名前 1484890815454 山本 15 年齢 1484890815454 21 76 名前 1484890815454 鈴木 76 年齢 1484890815454 25 95 名前 1484890815454 高橋 95 年齢 1484890815454 18 HBaseのテーブルの理解 〜regionの分割 8Copyright (C) 2017 Takeshi Mikami. All rights reserved. HBaseのテーブルのregionの分割について説明します。 • Region内のデータサイズが閾値を超えると、Regionがsplit(分割)されます。 (明示的にコマンドを入力してsplitすることも可能) Region① 00〜50 Region② 51〜99 Region① 00〜14 Region② 15〜50 Region③ 51〜99 データ量が閾値を 超えると、split データ量が閾値を 超えると、split
  • 9. takemikami’s note – http://takemikami.com/ HBaseのテーブルの理解 〜region状態の確認 9Copyright (C) 2017 Takeshi Mikami. All rights reserved. HBaseのテーブルのregion分割状態の確認方法について説明します。 • テーブルがどんなRegionに分割されているかは、HBaseのメタ情報から確認 hbase> scan ‘hbase:meta’,{FILTER=>“PrefixFilter(‘※テーブル名※’)"} column=info:regioninfo, ・・・・, value={・・・・, STARTKEY => '00', ENDKEY => '50'} ■コマンド ■結果 各regionの開始・終了位置各regionの開始・終了位置
  • 10. takemikami’s note – http://takemikami.com/ バルクロードの仕組み 10Copyright (C) 2017 Takeshi Mikami. All rights reserved. TSV TSV キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ キー 値 76 名前:鈴木, 年齢:25 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 25 ・・・ Map Shuffle キー 値 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 15 名前:山本, 年齢:21 25 ・・・ HFile キー 値 95 名前:高橋, 年齢:18 76 名前:鈴木, 年齢:25 65 ・・・ キー 名前 年齢 95 高橋 18 15 山本 21 65 ・・・ ・・・ キー 値 95 名前:高橋, 年齢:18 15 名前:山本, 年齢:21 65 ・・・ Map HFile Reduce Reduce Region② 51〜100 Complete BulkLoad Complete BulkLoad バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。 compltebulkload HBase importtsv step1 mapreduceでtsvファイルを HFile (HBaseの内部形式)に変換 Region① 00〜50step2 HFileを HBaseテーブルに ロード バルクロードは、この2stepで実施 次スライドから順を追って説明します
  • 11. takemikami’s note – http://takemikami.com/ バルクロードの仕組み 1. tsvファイルの準備 11Copyright (C) 2017 Takeshi Mikami. All rights reserved. TSV TSV キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ キー 値 76 名前:鈴木, 年齢:25 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 25 ・・・ Map Shuffle キー 値 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 15 名前:山本, 年齢:21 25 ・・・ HFile キー 値 95 名前:高橋, 年齢:18 76 名前:鈴木, 年齢:25 65 ・・・ キー 名前 年齢 95 高橋 18 15 山本 21 65 ・・・ ・・・ キー 値 95 名前:高橋, 年齢:18 15 名前:山本, 年齢:21 65 ・・・ Map HFile Reduce Reduce Region① 00〜50 Region② 51〜100 Complete BulkLoad Complete BulkLoad バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。 CompleteBulkLoad HBase ImportTSV HDFSに入力TSVファイルをアップロードします
  • 12. takemikami’s note – http://takemikami.com/ バルクロードの仕組み 2. mapper/reducerの起動 12Copyright (C) 2017 Takeshi Mikami. All rights reserved. TSV TSV キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ キー 値 76 名前:鈴木, 年齢:25 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 25 ・・・ Map Shuffle キー 値 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 15 名前:山本, 年齢:21 25 ・・・ HFile キー 値 95 名前:高橋, 年齢:18 76 名前:鈴木, 年齢:25 65 ・・・ キー 名前 年齢 95 高橋 18 15 山本 21 65 ・・・ ・・・ キー 値 95 名前:高橋, 年齢:18 15 名前:山本, 年齢:21 65 ・・・ Map HFile Reduce Reduce Region① 00〜50 Region② 51〜100 Complete BulkLoad Complete BulkLoad バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。 CompleteBulkLoad HBase ImportTSV 入力TSVファイル数に応じた数の mapperを起動します インポート先テーブルのRegion数の Reducerを起動します Regionが2つであれば、 Reducerも2つ Regionが2つであれば、 Reducerも2つ
  • 13. takemikami’s note – http://takemikami.com/ バルクロードの仕組み 3.map処理 13Copyright (C) 2017 Takeshi Mikami. All rights reserved. TSV TSV キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ キー 値 76 名前:鈴木, 年齢:25 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 25 ・・・ Map Shuffle キー 値 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 15 名前:山本, 年齢:21 25 ・・・ HFile キー 値 95 名前:高橋, 年齢:18 76 名前:鈴木, 年齢:25 65 ・・・ キー 名前 年齢 95 高橋 18 15 山本 21 65 ・・・ ・・・ キー 値 95 名前:高橋, 年齢:18 15 名前:山本, 年齢:21 65 ・・・ Map HFile Reduce Reduce Region① 00〜50 Region② 51〜100 Complete BulkLoad Complete BulkLoad バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。 CompleteBulkLoad HBase ImportTSV 入力TSVファイル数を インポート先テーブルの「キー」と「属性値のMap」 の形式にmapします
  • 14. takemikami’s note – http://takemikami.com/ バルクロードの仕組み 4.shuffle処理 14Copyright (C) 2017 Takeshi Mikami. All rights reserved. TSV TSV キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ キー 値 76 名前:鈴木, 年齢:25 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 25 ・・・ Map Shuffle キー 値 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 15 名前:山本, 年齢:21 25 ・・・ HFile キー 値 95 名前:高橋, 年齢:18 76 名前:鈴木, 年齢:25 65 ・・・ キー 名前 年齢 95 高橋 18 15 山本 21 65 ・・・ ・・・ キー 値 95 名前:高橋, 年齢:18 15 名前:山本, 年齢:21 65 ・・・ Map HFile Reduce Reduce Region① 00〜50 Region② 51〜100 Complete BulkLoad Complete BulkLoad バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。 CompleteBulkLoad HBase ImportTSV 出力先テーブルの regionのキー範囲に合わせ、 各reducerにshuffleします 00~50の範囲00~50の範囲 51~100の範囲51~100の範囲
  • 15. takemikami’s note – http://takemikami.com/ バルクロードの仕組み 5.reduce処理 15Copyright (C) 2017 Takeshi Mikami. All rights reserved. TSV TSV キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ キー 値 76 名前:鈴木, 年齢:25 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 25 ・・・ Map Shuffle キー 値 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 15 名前:山本, 年齢:21 25 ・・・ HFile キー 値 95 名前:高橋, 年齢:18 76 名前:鈴木, 年齢:25 65 ・・・ キー 名前 年齢 95 高橋 18 15 山本 21 65 ・・・ ・・・ キー 値 95 名前:高橋, 年齢:18 15 名前:山本, 年齢:21 65 ・・・ Map HFile Reduce Reduce Region① 00〜50 Region② 51〜100 Complete BulkLoad Complete BulkLoad バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。 CompleteBulkLoad HBase ImportTSV regionのキー範囲ごとに、 Reduce処理で、 HFileを生成します
  • 16. takemikami’s note – http://takemikami.com/ バルクロードの仕組み 6.completebulkload処理 16Copyright (C) 2017 Takeshi Mikami. All rights reserved. TSV TSV キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ キー 値 76 名前:鈴木, 年齢:25 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 25 ・・・ Map Shuffle キー 値 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 15 名前:山本, 年齢:21 25 ・・・ HFile キー 値 95 名前:高橋, 年齢:18 76 名前:鈴木, 年齢:25 65 ・・・ キー 名前 年齢 95 高橋 18 15 山本 21 65 ・・・ ・・・ キー 値 95 名前:高橋, 年齢:18 15 名前:山本, 年齢:21 65 ・・・ Map HFile Reduce Reduce Region① 00〜50 Region② 51〜100 Complete BulkLoad Complete BulkLoad バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。 CompleteBulkLoad HBase ImportTSV 各region毎に、 Hfileをテーブルにロードします
  • 17. takemikami’s note – http://takemikami.com/ バルクロードの仕組み 改めて全体 17Copyright (C) 2017 Takeshi Mikami. All rights reserved. TSV TSV キー 名前 年齢 76 鈴木 25 03 佐藤 32 12 山田 47 25 ・・・ ・・・ キー 値 76 名前:鈴木, 年齢:25 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 25 ・・・ Map Shuffle キー 値 03 名前:佐藤, 年齢:32 12 名前:山田, 年齢:47 15 名前:山本, 年齢:21 25 ・・・ HFile キー 値 95 名前:高橋, 年齢:18 76 名前:鈴木, 年齢:25 65 ・・・ キー 名前 年齢 95 高橋 18 15 山本 21 65 ・・・ ・・・ キー 値 95 名前:高橋, 年齢:18 15 名前:山本, 年齢:21 65 ・・・ Map HFile Reduce Reduce Region① 00〜50 Region② 51〜100 Complete BulkLoad Complete BulkLoad バルクロード(ImportTSV〜CompleteBulkLoad)の流れについて順を追って説明します。 CompleteBulkLoad HBase ImportTSV
  • 18. takemikami’s note – http://takemikami.com/ バルクロード実施時の注意点 • バルクロード実施時、以下のバランスが悪いと問題が生じる – ①ロードするデータサイズ ②テーブルのregion分割数 18Copyright (C) 2017 Takeshi Mikami. All rights reserved. バルクロード実施時の注意点を説明します。 『①ロードするデータサイズ > ②テーブルのregion分割数』の場合 ロードするデータがregionに収まりきらず、 completebulkloadの途中で、何度もauto-splitが発生し、ロードに時間がかかる。 『①ロードするデータサイズ < ②テーブルのregion分割数』の場合 region分割数が多いと多数のHFileができる。 テーブルを洗い替え(truncate→complatebulkload)しようとすると、 単一regionにロードできるHFile数の閾値を超えて、エラーになってしまう。 → (importtsv実行前にregionを手動splitするなど) ロードするデータサイズとregion数をバランスさせておく必要がある。