SlideShare a Scribd company logo
1 of 43
Download to read offline
© 2018 NTT DATA Corporation
NTTデータ テクノロジーカンファレンス 2018
© 2018 NTT DATA Corporation© 2018 NTT DATA Corporation
Hadoopエコシステムのデータストア振り返り
2018年10月31日
株式会社NTTデータ 岩崎正剛
© 2018 NTT DATA Corporation 2
Hadoopエコシステムのデータストア
• 今回(も)取り上げるのは以下の3つ
– HDFS: 分散ファイルシステム
– HBase: 分散キーバリューストア
– Kudu: 分散Columnarストア
© 2018 NTT DATA Corporation 3
背景とお題
• クラウドサービスの充実
• 自分でHadoopを運用するのは大変
• マネージドサービスで済むなら楽
• 使い分けのポイントは? とか
俺Hadoopが活きる場面はなんだろう?
という切り口でHDFS、HBase、Kuduを眺めてみる
• おもにコスト以外の側面で
© 2018 NTT DATA Corporation 4
比較されがちなマネージドサービス
• HDFS:
– Amazon S3
– Azure Blob Strage
• HBase:
– Amazon DynamoDB
– Google Cloud Bigtable
• Kudu(+Impala):
– Google Bigquery
– Google Cloud Spanner
© 2018 NTT DATA Corporation 5
HDFSとHadoop FileSystem API
© 2018 NTT DATA Corporation 6
HDFS(Hadoop Distributed File System)の概要
• POSIX非準拠なユーザ空間分散ファイルシステム
• 大きなファイル(100+MB)の格納に最適化
• 分散処理FW向けの高スループットなデータIO
– データローカリティ: データのある場所で処理実行
• マスターノードがメタデータを管理
NameNode
DataNode
DataNode
DataNode
DataNode
© 2018 NTT DATA Corporation 7
ファイルシステム?
• データをファイルという単位で管理する
• ファイルはデータ(バイト列)の入れ物
• ディレクトリはファイルやディレクトリの入れ物
• 階層的なディレクトリ構造でファイルを整理
• ディレクトリは中身の一覧を取得できる
• ファイルとディレクトリはメタデータ(owner, ...)を持つ
• ...
© 2018 NTT DATA Corporation 8
Hadoop FileSystem API
• Hadoopが提供するファイル操作インタフェース
• 基本的にはHDFSの機能を抽象化したもの
boolean mkdirs(Path f, FsPermission permission)
FSDataOutputStream create(Path f)
FSDataInputStream open(Path f)
FSDataOutputStream append(Path f)
boolean delete(Path f, boolean recursive)
FileStatus[] listStatus(Path f)
void setPermission(Path p, FsPermission permission)
void setOwner(Path p, String username, String groupname)
void setXAttr(Path path, String name, byte[] value, EnumSet<XAttrSetFlag>
Path createSnapshot(Path path)
...
© 2018 NTT DATA Corporation 9
FileSystem実装いろいろ
• FileSystem APIを使ってアプリケーションを書くと
HDFS以外のデータストアにも透過的にアクセスできる
• MapReduceやSparkが(使っているパーツが)活用
• Hadoopビルトインの実装もいろいろ
• ファイルシステムではないデータストア用もある
DistributedFileSystem
LocalFileSystem
S3AFileSystem
NativeAzureFileSystem
AdlFileSystem
SwiftNativeFileSystem
...
© 2018 NTT DATA Corporation 10
Amazon S3
• マネージドサービスなオブジェクトストレージ
• 最大5TBのデータを格納
• REST APIでアクセス
– PUT, GETで読み書き
• オブジェクト(データ)はフラットなキー空間で管理
– 階層的なディレクトリはない
• FileSystem実装はS3をファイルシステムにみせかける
• ユーザが多く歴史が長い
© 2018 NTT DATA Corporation 11
NDFS
• Hadoopは元々Nutchのサブモジュールだった
• Googleが論文として発表したGFSやMapReduceを参考にDoug Cuttingが...
• Nutch Distributed File System
• ローカルFSでも透過的にアプリを実行する仕組みを用意
• その後、モジュールは切り出されてHadoopに
– NUTCH-193: MapReduce and NDFS code moved to new project, Hadoop.
LocalFileSystem extends NutchFileSystem
NDFSFileSystem extends NutchFileSystem
© 2018 NTT DATA Corporation 12
Path should use URI syntax
• HADOOP-571
• PathをURIで指定できるように
• クライアントライブラリ内で
URIのスキームに応じてFileSystem実装を自動切替
• 複数のデータストア間のファイル操作に便利
$ hadoop fs -cp file:///a/b hdfs://ns/c/d
$ hadoop fs -cp hdfs://ns/c/d s3a://bc/e/f
© 2018 NTT DATA Corporation 13
S3FileSystem
• HADOOP-574: want FileSystem implementation for Amazon S3
– Resolved: 14/Dec/2006
• s3://でアクセス
• S3FileSystemで書いたファイルしか読めない
– ファイルはHDFSと同じ要領でブロックに分けて管理
• pathがキーのオブジェクトにブロックIDのリストを格納
• ブロックIDがキーのオブジェクトに実データを格納
/dir1
/dir1/file1
block-6415776850131549260
block-3026438247347758425
© 2018 NTT DATA Corporation 14
NativeS3FileSystem
• HADOOP-930: Add support for reading regular (non-block-
based) files from S3 in S3FileSystem
• s3n://でアクセス
• オブジェクトのデータ=ファイルのデータ
– write時はローカルファイルに書いてclose時にupload
• ディレクトリは専用suffixを持つ空オブジェクトで表現
– 末尾に _$folder$ が付く
– MIME typeを使うと識別するのに各オブジェクトに要アクセス
– キー名で区別がつくとキー一覧取得だけでlsが実現できる
$ hadoop fs -mkdir s3n://bc/a/b
-> /a/b_$folder$
© 2018 NTT DATA Corporation 15
S3AFileSystem
• HADOOP-10400: Incorporate new S3A FileSystem implementation
• s3a://でアクセス
• ディレクトリはキー末尾が "/" の空オブジェクトで表現
– 他のS3用ツールで使われだした流儀に合わせる
• NativeS3FileSystemをリプレースする改良版
– 複数ファイルの処理の並列化
– IAMロールベースの認証
– エラー処理の改善
– multipart upload
– seekの高速化
© 2018 NTT DATA Corporation 16
FileSystem on Microsoft Azure
• NativeAzureFileSystem
– HADOOP-9629:
Support Windows Azure Storage - Blob file system in Hadoop
– wasb://...
• AdlFileSystem
– HADOOP-12666:
Support Microsoft Azure Data Lake - as a file system in Hadoop
– adl://...
• AzureBlobFileSystem
– HADOOP-15407:
Support Windows Azure Storage - Blob file system in Hadoop
– adfs://...
© 2018 NTT DATA Corporation 17
FileSystem specification
• HADOOP-9361: Strictly define the expected behavior of
filesystem APIs and write tests to verify compliance
• FileSystemの仕様をちゃんと文書化
– https://hadoop.apache.org/docs/r3.1.0/hadoop-project-
dist/hadoop-common/filesystem/index.html
• 仕様の満足度のテストシステムを追加
@Test
public void testGetFileStatusRoot() throws Throwable {
ContractTestUtils.assertIsDirectory(
getFileSystem().getFileStatus(new Path("/")));
}
© 2018 NTT DATA Corporation 18
FileSystem on S3の課題
• S3のeventual consistency
– オブジェクトをUpdateした直後に古いデータが見える
– Deleteしたオブジェクトが直後に見える
– Createしたオブジェクトが直後にリストに出ない
• 後続ジョブが前段の出力を使うときに問題
• renameが高コスト
– キーの変更はできない
– なので新規オブジェクトにデータコピーして元を削除
– ディレクトリのrenameはその繰り返し
© 2018 NTT DATA Corporation 19
S3Guard: Improved Consistency for S3A
• HADOOP-13345
• S3AFileSystemの一貫性を改善するアドオン
– createしたファイルが確実にlsに出てくる
• 補助的なメタデータ置き場としてDynamoDBを利用
– create: S3にオブジェクト作成後、DynamoDBに記録
– listStatus: S3(キー一覧)とDynamoDBの両方を見る
• inspired by EMRFS and s3mper
– https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-fs.html
– https://github.com/Netflix/s3mper
https://issues.apache.org/jira/secure/attachment/12821464/S3GuardImprovedConsistencyforS3AV2.pdf
© 2018 NTT DATA Corporation 20
HDFSとFileSystem API まとめ
• FileSystem APIは各種データストアへのアクセスを提供
– オブジェクトストレージのサービスも使える
– アプリケーションをデータストア透過的に書ける
– データストアの併用もできる
• HDFSならではのポイント
– ファイルシステムのセマンティクス
• 一貫性があり高速なメタデータ管理
• 細かいAPI(read, write, fsync (HBaseの項で後述)
– データローカリティもあるよ
© 2018 NTT DATA Corporation 21
HBase
© 2018 NTT DATA Corporation 22
HBaseの概要
• 分散キーバリューストア
– キーのレンジパーティショニングでデータを分散
– プリミティブなAPI(put, get, scan, batch)
– スケーラブル
• データ増加に応じてテーブルを自動分割
• ノード間で自動rebalance
• HDFS上に実装
– HADOOP-1045: Add contrib/hbase, a BigTable-like online database.
– データファイルとWALファイルをHDFSに書く
– 小データのランダムwrite/readが得意
• HDFSの苦手なワークロードをカバー
NameNode
RegionServer
RegionServer
RegionServer
HMaster
DataNode
DataNode
DataNode
© 2018 NTT DATA Corporation 23
HBaseのデータモデル
row
family:f1 family:f2
qualifier:a qualifier:b qualifier:c qualifier:d
r1 a1 b1 c1 d1
r2 b2 d2
$ hbase o.a.h.h.io.hfile.HFile -f .../f1/2c15a -p
K: r1/f1:a/1540305882646/Put/vlen=2/seqid=4 V: a1
K: r1/f1:b/1540305889773/Put/vlen=2/seqid=5 V: b1
K: r2/f1:b/1540305914939/Put/vlen=2/seqid=6 V: b2
$ hbase o.a.h.h.io.hfile.HFile -f .../f2/2c15a -p
K: r1/f2:c/1540305975753/Put/vlen=2/seqid=7 V: c1
K: r1/f2:d/1540305981923/Put/vlen=2/seqid=8 V: d1
K: r2/f2:d/1540306017649/Put/vlen=2/seqid=9 V: d2
論理的な行
atomicに更新可能
テーブルは
サイズベース
で水平分割
© 2018 NTT DATA Corporation 24
HBaseのWAL書き込み
• HDFSのhflush/hsyncを利用
– HADOOP-1700: Append to files in HDFS
– HADOOP-2657: Enhancements to DFSClient to support flushing data at any point in time
• fsyncに相当: ファイルをcloseせずwriteをdurableに
• WALエントリのwrite確定後にクライアントにレスポンス
DataNode
NameNode
DataNode
Client
DataNode
write
ack
write
IBR
addBlock
LocatedBlock
write
ack
ackwrite済みのデータの
ackが戻るまで待つ
hsyncだとackを返
す前にfsync
© 2018 NTT DATA Corporation 25
HBase on Amazon S3
• HBASE-17437: Support specifying a WAL directory
outside of the root directory
– contributed by AWS
– https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hbase-s3.html
<property>
<name>hbase.rootdir</name>
<value>s3a://mybucket/hbase-root</value>
</property>
<property>
<name>hbase.wal.dir</name>
<value>hdfs://mycluster/hbase-wal</value>
</property>
© 2018 NTT DATA Corporation 26
HBase 1.0 API
• APIをクリーンアップ
– HBASE-10479: HConnection interface is public but is used internally, and contains a bunch of methods
– HBASE-12127: Move the core Connection creation functionality into ConnectionFactory
– ..........
• Googleのエンジニアが協力
• HBaseのアプリがそのままCloud Bigtableに接続可能
– ConnectionFactgory#createConnectionが返すオブジェクトを切り替え
– 利用できないAPIもある
• https://cloud.google.com/bigtable/docs/hbase-differences
<property>
<name>hbase.client.connection.impl</name
<value>com.google.cloud.bigtable.hbase1_x.BigtableConnection</value>
</property>
© 2018 NTT DATA Corporation 27
Coprocessor
• HBASE-2000: Coprocessors
• サーバプロセス内で任意の処理を実行する機構
– しくじればサーバプロセスは落ちる
• Endpoint: ストアドプロシージャのようなもの
• Observer: トリガーのようなもの
• MasterObserver
• RegionObserver
• RegionServerObserver
• WALObserver
• ...
• HBase自身も活用
– 既存コードと新規機能を完全分離できる
© 2018 NTT DATA Corporation 28
RegionObserverのメソッド
preAppend
preAppendAfterRowLock
preBatchMutate
preBulkLoadHFile
preCheckAndDelete
preCheckAndDeleteAfterRowLock
preCheckAndPut
preCheckAndPutAfterRowLock
preClose
preCommitStoreFile
preCompact
preCompactScannerOpen
preCompactSelection
preDelete
preExists
preFlush
preFlush
preFlushScannerOpen
preGetOp
preIncrement
preIncrementAfterRowLock
preMemStoreCompaction
preMemStoreCompactionCompact
preMemStoreCompactionCompactScannerOpen
preOpen
prePrepareTimeStampForDeleteVersion
prePut
preReplayWALs
preScannerClose
preScannerNext
preScannerOpen
preStoreFileReaderOpen
preStoreScannerOpen
preWALRestore
postAppend
postBatchMutate
postBatchMutateIndispensably
postBulkLoadHFile
postCheckAndDelete
postCheckAndPut
postClose
postCloseRegionOperation
postCommitStoreFile
postCompact
postCompactSelection
postDelete
postExists
postFlush
postFlush
postGetOp
postIncrement
postInstantiateDeleteTracker
postMemStoreCompaction
postMutationBeforeWAL
postOpen
postPut
postReplayWALs
postScannerClose
postScannerFilterRow
postScannerNext
postScannerOpen
postStartRegionOperation
postStoreFileReaderOpen
postWALRestore
© 2018 NTT DATA Corporation 29
ACL
• HBASE-3025: Coprocessor based simple access control
• 各種処理の前後でアクセス制御
• 後にCell単位でも制御可能に
– HBASE-7662: [Per-KV security] Per cell ACLs stored in tags
...
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
<name>hbase.coprocessor.regionserver.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
© 2018 NTT DATA Corporation 30
MultiRowMutationEndpoint
• HBASE-5229: Provide basic building blocks for "multi-row" local transactions.
• 同一region内の複数行をatomicに更新する
– 本体(HRegion)への機能追加だがpublicなAPIにしたくないのでEndpointを利用
• metaテーブルの操作のために作った
– assignやsplitのときmetaに複数行をatomicにputしたい
• 昔はZooKeeperで制御: see HBASE-11059: ZK-less region assignment
– metaテーブルはsplitされない
• 普通のテーブルで使うにはRegionSplitPolicyによる工夫が必要
return TableDescriptorBuilder.newBuilder(TableName.META_TABLE_NAME)
...
.setCoprocessor(CoprocessorDescriptorBuilder.newBuilder(
MultiRowMutationEndpoint.class.getName())
.setPriority(Coprocessor.PRIORITY_SYSTEM)
.build());
© 2018 NTT DATA Corporation 31
Apache Tephra
• TransactionAwareHTable implements Table
• cellのタイムスタンプにトランザクションIDを埋め込む
public RegionScanner preScannerOpen(ObserverContext<RegionCoprocessorEnvironment> e, Scan
throws IOException {
Transaction tx = getFromOperation(scan);
if (tx != null) {
projectFamilyDeletes(scan);
scan.setMaxVersions();
scan.setTimeRange(TxUtils.getOldestVisibleTimestamp(ttlByFamily, tx, readNonTxnData),
TxUtils.getMaxVisibleTimestamp(tx));
Filter newFilter = getTransactionFilter(tx, ScanType.USER_SCAN, scan.getFilter());
scan.setFilter(newFilter);
}
return s;
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.tephra.hbase.coprocessor.TransactionProcessor</value>
</property>
© 2018 NTT DATA Corporation 32
HBaseまとめ
• Google Cloud BigtableはHBase APIをサポート
– アプリケーションをBigtable透過的に書ける
• HBaseならではのポイント
– フルセットのHBase API
– Coprocessorによる高い拡張性
– それを活かして作られたツール群
© 2018 NTT DATA Corporation 33
Kudu
© 2018 NTT DATA Corporation 34
Kuduの概要
• 分散Columnarストア
– Analytics向け: 構造化データに対する高速なscan
– INSERT/UPDATEをサポート
• SQL処理系は提供しない
– API(insert, update, scan)でデータにアクセス
– SQL処理系から使われることを想定
– Impalaが標準SQLエンジン的な扱い
id(pk): int64 ts:timestamp foo:string
1 1111111 f
2 2222222 ff
3 3333333 fff
© 2018 NTT DATA Corporation 35
更新を実現する仕組み
• HBaseと同じLSM-x
– データファイルはrandom updateできない/しない
– 書き込みはメモリに -> 溜まったらファイルに書き出す
– 読み込みはメモリとディスクの両方みる
– データファイルはときどきまとめつつゴミ掃除
• HBaseと同じようにHDFS上に作れそうだが
HFile
CFile
HFile
Cfile
MemStore
HFile
CFile
readwrite
flush compaction
© 2018 NTT DATA Corporation 36
HBaseとの違い
• HDFSやZooKeeperに非依存
– 他のミドルウェアに依存するとバージョン間整合の維持が厄介
– コントロールできない部分が残る: 例) HBaseのデータローカリティ
– スピード感が落ちる: 例) HDFSに修正を提案しても反応が鈍い
– 必要な機能(leader electionとデータ冗長化)はRaft実装を作って賄う
• JavaではなくC++で実装
– ヒープサイズの上限に縛られない(オフヒープは煩雑)
– OS/HWをフル活用できない(JNIは煩雑)
• Kudu作者はもともとHadoopおよびHBaseのコア開発者
– あえての選択
– 過去にRaftを参考にNameNode-HA(QJM+JournalNode)を作った
• HDFS-3077: Quorum-based protocol for reading and writing edit logs
© 2018 NTT DATA Corporation 37
Kuduのテーブル分割
• KUDU-818: Support table partitioning other than PK range partitioning
• RangeパーティショニングとHashパーティショニング
• 動的分割ではない
– hashのバケット数は後から変えられない
– rangeは手動で追加、削除可能
• 組み合わせ可能: rangeは1つ、hashは多次元化できる
(2016/01, 333) (2017/05, 333) (2018/04, 333)
(2016/02, 222) (2017/04, 222) (2018/08, 222)
(2016/03, 111) (2017/03, 111) (2018/12, 111)
hash
range
2016 2017 2018
© 2018 NTT DATA Corporation 38
kudu-spark
• Spark SQLのData Sourcesに対応
• 基本的なfilterはプッシュダウンされる
– o.a.spark.sql.sources.Filter => o.a.kudu.client.KuduPredicate
• KuduのJava APIと併用もできる
spark.read.options(Map("kudu.master" -> "lh","kudu.table" -> "foo"))
.kudu.as[Foo].foreachPartition { it => foobar(it, kuduContext) }
...
def foobar(it: Iterator[Foo], kc: KuduContext): Unit = {
val client = kc.syncClient
val session = client.newSession()
val bar = client.openTable("bar")
while(it.hasNext) {
val f = it.next
val b = bar.newUpdate()
b.getRow.addLong("a", f.id)
...
© 2018 NTT DATA Corporation 39
Kuduのconsistency
• KUDU-430: Consistent Operations
– Analyticsでもイベントの順序関係が重要なケースのために
• timestampベースの仕組みを提供
– Read:
• READ_LATEST: 最新のcommit済データを読む
• READ_AT_SNAPSHOT: scannerにセットしたタイムスタンプ時点のデータを読む
• READ_YOUR_WRITES: 自分のwriteが読めるようなタイムスタンプを自動セット
– READ_AT_SNAPSHOTのバリエーション
– KUDU-1704: Add a new read mode to perform bounded staleness snapshot reads
– Write:
• CLIENT_PROPAGATED: クライアント間で順序を保つためにtimestampをやりとり
• COMMIT_WAIT: ノード間の時刻ずれ分commitを待つ
• 複数行をatomicに更新する仕組みは(まだ)ない
© 2018 NTT DATA Corporation 40
Kuduまとめ
• SQLだと...もともと透過的に使いやすい
• Kuduならではのポイント
– データを随時追加、更新可能
– 柔軟なテーブル分割戦略
– SQLエンジンと疎結合
• SparkやMapReduceからの利用
• データローカリティもあるよ
– 一貫性まわりの機能
© 2018 NTT DATA Corporation 41
おわりに
© 2018 NTT DATA Corporation 42
おわりに
• クラウドサービス充実した
• それでもHadoopは役に立つ
– クラウドサービスを透過的に活用できるAPI
– バックグラウンドの知識
• Hadoopはオープンソースソフトウェア
– 中が見えるっていいよね
– ロマンあふれる魔改造も
© 2018 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

What's hot

ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)hamaken
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...NTT DATA Technology & Innovation
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)NTT DATA Technology & Innovation
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...NTT DATA Technology & Innovation
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Yuki Morishita
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)NTT DATA Technology & Innovation
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントCloudera Japan
 
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...NTT DATA Technology & Innovation
 
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
 
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...NTT DATA OSS Professional Services
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...Holden Karau
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話Kentaro Yoshida
 

What's hot (20)

ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイント
 
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
 
Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
 
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 発表資料)
 
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 

Similar to Hadoopエコシステムのデータストア振り返り

Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Cloudera Japan
 
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Cloudera Japan
 
Hadoopビッグデータ基盤の歴史を振り返る #cwt2015
Hadoopビッグデータ基盤の歴史を振り返る #cwt2015Hadoopビッグデータ基盤の歴史を振り返る #cwt2015
Hadoopビッグデータ基盤の歴史を振り返る #cwt2015Cloudera Japan
 
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)NTT DATA OSS Professional Services
 
Hadoopデータプラットフォーム #cwt2013
Hadoopデータプラットフォーム #cwt2013Hadoopデータプラットフォーム #cwt2013
Hadoopデータプラットフォーム #cwt2013Cloudera Japan
 
Beginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopBeginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopDataWorks Summit
 
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化Takahiro Moteki
 
HDFS HA セミナー #hadoop
HDFS HA セミナー #hadoopHDFS HA セミナー #hadoop
HDFS HA セミナー #hadoopCloudera Japan
 
Osc2012 spring HBase Report
Osc2012 spring HBase ReportOsc2012 spring HBase Report
Osc2012 spring HBase ReportSeiichiro Ishida
 
Hadoop Compatible File Systems 2019 (db tech showcase 2019 Tokyo講演資料、2019/09/25)
Hadoop Compatible File Systems 2019 (db tech showcase 2019 Tokyo講演資料、2019/09/25)Hadoop Compatible File Systems 2019 (db tech showcase 2019 Tokyo講演資料、2019/09/25)
Hadoop Compatible File Systems 2019 (db tech showcase 2019 Tokyo講演資料、2019/09/25)NTT DATA Technology & Innovation
 
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~Developers Summit
 
Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編IBM Analytics Japan
 

Similar to Hadoopエコシステムのデータストア振り返り (20)

Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
 
Distributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystem
 
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
 
HDFS Router-based federation
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federation
 
Hadoopビッグデータ基盤の歴史を振り返る #cwt2015
Hadoopビッグデータ基盤の歴史を振り返る #cwt2015Hadoopビッグデータ基盤の歴史を振り返る #cwt2015
Hadoopビッグデータ基盤の歴史を振り返る #cwt2015
 
Hadoop loves H2
Hadoop loves H2Hadoop loves H2
Hadoop loves H2
 
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
 
Apache Hadoop HDFSの最新機能の紹介(2018)#dbts2018
Apache Hadoop HDFSの最新機能の紹介(2018)#dbts2018Apache Hadoop HDFSの最新機能の紹介(2018)#dbts2018
Apache Hadoop HDFSの最新機能の紹介(2018)#dbts2018
 
Hadoopデータプラットフォーム #cwt2013
Hadoopデータプラットフォーム #cwt2013Hadoopデータプラットフォーム #cwt2013
Hadoopデータプラットフォーム #cwt2013
 
Beginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopBeginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning Hadoop
 
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
 
AI・HPC・ビッグデータで利用される分散ファイルシステムを知る
AI・HPC・ビッグデータで利用される分散ファイルシステムを知るAI・HPC・ビッグデータで利用される分散ファイルシステムを知る
AI・HPC・ビッグデータで利用される分散ファイルシステムを知る
 
HDFS HA セミナー #hadoop
HDFS HA セミナー #hadoopHDFS HA セミナー #hadoop
HDFS HA セミナー #hadoop
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
 
Osc2012 spring HBase Report
Osc2012 spring HBase ReportOsc2012 spring HBase Report
Osc2012 spring HBase Report
 
Hadoop Compatible File Systems 2019 (db tech showcase 2019 Tokyo講演資料、2019/09/25)
Hadoop Compatible File Systems 2019 (db tech showcase 2019 Tokyo講演資料、2019/09/25)Hadoop Compatible File Systems 2019 (db tech showcase 2019 Tokyo講演資料、2019/09/25)
Hadoop Compatible File Systems 2019 (db tech showcase 2019 Tokyo講演資料、2019/09/25)
 
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
 
はやわかりHadoop
はやわかりHadoopはやわかりHadoop
はやわかりHadoop
 
Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編
 
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreadingApache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
 

More from NTT DATA OSS Professional Services

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力NTT DATA OSS Professional Services
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~NTT DATA OSS Professional Services
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~NTT DATA OSS Professional Services
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのことNTT DATA OSS Professional Services
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~NTT DATA OSS Professional Services
 
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)NTT DATA OSS Professional Services
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)NTT DATA OSS Professional Services
 
本当にあったHadoopの恐い話 Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
本当にあったHadoopの恐い話Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...本当にあったHadoopの恐い話Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
本当にあったHadoopの恐い話 Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...NTT DATA OSS Professional Services
 
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)NTT DATA OSS Professional Services
 
Hadoopのメンテナンスリリースバージョンをリリースしてみた (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo...
Hadoopのメンテナンスリリースバージョンをリリースしてみた (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo...Hadoopのメンテナンスリリースバージョンをリリースしてみた (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo...
Hadoopのメンテナンスリリースバージョンをリリースしてみた (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo...NTT DATA OSS Professional Services
 
HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)
HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)
HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)NTT DATA OSS Professional Services
 

More from NTT DATA OSS Professional Services (20)

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
Application of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jpApplication of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jp
 
Application of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructureApplication of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructure
 
Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
 
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
 
本当にあったHadoopの恐い話 Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
本当にあったHadoopの恐い話Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...本当にあったHadoopの恐い話Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
本当にあったHadoopの恐い話 Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
 
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
 
Hadoopのメンテナンスリリースバージョンをリリースしてみた (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo...
Hadoopのメンテナンスリリースバージョンをリリースしてみた (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo...Hadoopのメンテナンスリリースバージョンをリリースしてみた (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo...
Hadoopのメンテナンスリリースバージョンをリリースしてみた (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo...
 
HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)
HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)
HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)
 

Hadoopエコシステムのデータストア振り返り

  • 1. © 2018 NTT DATA Corporation NTTデータ テクノロジーカンファレンス 2018 © 2018 NTT DATA Corporation© 2018 NTT DATA Corporation Hadoopエコシステムのデータストア振り返り 2018年10月31日 株式会社NTTデータ 岩崎正剛
  • 2. © 2018 NTT DATA Corporation 2 Hadoopエコシステムのデータストア • 今回(も)取り上げるのは以下の3つ – HDFS: 分散ファイルシステム – HBase: 分散キーバリューストア – Kudu: 分散Columnarストア
  • 3. © 2018 NTT DATA Corporation 3 背景とお題 • クラウドサービスの充実 • 自分でHadoopを運用するのは大変 • マネージドサービスで済むなら楽 • 使い分けのポイントは? とか 俺Hadoopが活きる場面はなんだろう? という切り口でHDFS、HBase、Kuduを眺めてみる • おもにコスト以外の側面で
  • 4. © 2018 NTT DATA Corporation 4 比較されがちなマネージドサービス • HDFS: – Amazon S3 – Azure Blob Strage • HBase: – Amazon DynamoDB – Google Cloud Bigtable • Kudu(+Impala): – Google Bigquery – Google Cloud Spanner
  • 5. © 2018 NTT DATA Corporation 5 HDFSとHadoop FileSystem API
  • 6. © 2018 NTT DATA Corporation 6 HDFS(Hadoop Distributed File System)の概要 • POSIX非準拠なユーザ空間分散ファイルシステム • 大きなファイル(100+MB)の格納に最適化 • 分散処理FW向けの高スループットなデータIO – データローカリティ: データのある場所で処理実行 • マスターノードがメタデータを管理 NameNode DataNode DataNode DataNode DataNode
  • 7. © 2018 NTT DATA Corporation 7 ファイルシステム? • データをファイルという単位で管理する • ファイルはデータ(バイト列)の入れ物 • ディレクトリはファイルやディレクトリの入れ物 • 階層的なディレクトリ構造でファイルを整理 • ディレクトリは中身の一覧を取得できる • ファイルとディレクトリはメタデータ(owner, ...)を持つ • ...
  • 8. © 2018 NTT DATA Corporation 8 Hadoop FileSystem API • Hadoopが提供するファイル操作インタフェース • 基本的にはHDFSの機能を抽象化したもの boolean mkdirs(Path f, FsPermission permission) FSDataOutputStream create(Path f) FSDataInputStream open(Path f) FSDataOutputStream append(Path f) boolean delete(Path f, boolean recursive) FileStatus[] listStatus(Path f) void setPermission(Path p, FsPermission permission) void setOwner(Path p, String username, String groupname) void setXAttr(Path path, String name, byte[] value, EnumSet<XAttrSetFlag> Path createSnapshot(Path path) ...
  • 9. © 2018 NTT DATA Corporation 9 FileSystem実装いろいろ • FileSystem APIを使ってアプリケーションを書くと HDFS以外のデータストアにも透過的にアクセスできる • MapReduceやSparkが(使っているパーツが)活用 • Hadoopビルトインの実装もいろいろ • ファイルシステムではないデータストア用もある DistributedFileSystem LocalFileSystem S3AFileSystem NativeAzureFileSystem AdlFileSystem SwiftNativeFileSystem ...
  • 10. © 2018 NTT DATA Corporation 10 Amazon S3 • マネージドサービスなオブジェクトストレージ • 最大5TBのデータを格納 • REST APIでアクセス – PUT, GETで読み書き • オブジェクト(データ)はフラットなキー空間で管理 – 階層的なディレクトリはない • FileSystem実装はS3をファイルシステムにみせかける • ユーザが多く歴史が長い
  • 11. © 2018 NTT DATA Corporation 11 NDFS • Hadoopは元々Nutchのサブモジュールだった • Googleが論文として発表したGFSやMapReduceを参考にDoug Cuttingが... • Nutch Distributed File System • ローカルFSでも透過的にアプリを実行する仕組みを用意 • その後、モジュールは切り出されてHadoopに – NUTCH-193: MapReduce and NDFS code moved to new project, Hadoop. LocalFileSystem extends NutchFileSystem NDFSFileSystem extends NutchFileSystem
  • 12. © 2018 NTT DATA Corporation 12 Path should use URI syntax • HADOOP-571 • PathをURIで指定できるように • クライアントライブラリ内で URIのスキームに応じてFileSystem実装を自動切替 • 複数のデータストア間のファイル操作に便利 $ hadoop fs -cp file:///a/b hdfs://ns/c/d $ hadoop fs -cp hdfs://ns/c/d s3a://bc/e/f
  • 13. © 2018 NTT DATA Corporation 13 S3FileSystem • HADOOP-574: want FileSystem implementation for Amazon S3 – Resolved: 14/Dec/2006 • s3://でアクセス • S3FileSystemで書いたファイルしか読めない – ファイルはHDFSと同じ要領でブロックに分けて管理 • pathがキーのオブジェクトにブロックIDのリストを格納 • ブロックIDがキーのオブジェクトに実データを格納 /dir1 /dir1/file1 block-6415776850131549260 block-3026438247347758425
  • 14. © 2018 NTT DATA Corporation 14 NativeS3FileSystem • HADOOP-930: Add support for reading regular (non-block- based) files from S3 in S3FileSystem • s3n://でアクセス • オブジェクトのデータ=ファイルのデータ – write時はローカルファイルに書いてclose時にupload • ディレクトリは専用suffixを持つ空オブジェクトで表現 – 末尾に _$folder$ が付く – MIME typeを使うと識別するのに各オブジェクトに要アクセス – キー名で区別がつくとキー一覧取得だけでlsが実現できる $ hadoop fs -mkdir s3n://bc/a/b -> /a/b_$folder$
  • 15. © 2018 NTT DATA Corporation 15 S3AFileSystem • HADOOP-10400: Incorporate new S3A FileSystem implementation • s3a://でアクセス • ディレクトリはキー末尾が "/" の空オブジェクトで表現 – 他のS3用ツールで使われだした流儀に合わせる • NativeS3FileSystemをリプレースする改良版 – 複数ファイルの処理の並列化 – IAMロールベースの認証 – エラー処理の改善 – multipart upload – seekの高速化
  • 16. © 2018 NTT DATA Corporation 16 FileSystem on Microsoft Azure • NativeAzureFileSystem – HADOOP-9629: Support Windows Azure Storage - Blob file system in Hadoop – wasb://... • AdlFileSystem – HADOOP-12666: Support Microsoft Azure Data Lake - as a file system in Hadoop – adl://... • AzureBlobFileSystem – HADOOP-15407: Support Windows Azure Storage - Blob file system in Hadoop – adfs://...
  • 17. © 2018 NTT DATA Corporation 17 FileSystem specification • HADOOP-9361: Strictly define the expected behavior of filesystem APIs and write tests to verify compliance • FileSystemの仕様をちゃんと文書化 – https://hadoop.apache.org/docs/r3.1.0/hadoop-project- dist/hadoop-common/filesystem/index.html • 仕様の満足度のテストシステムを追加 @Test public void testGetFileStatusRoot() throws Throwable { ContractTestUtils.assertIsDirectory( getFileSystem().getFileStatus(new Path("/"))); }
  • 18. © 2018 NTT DATA Corporation 18 FileSystem on S3の課題 • S3のeventual consistency – オブジェクトをUpdateした直後に古いデータが見える – Deleteしたオブジェクトが直後に見える – Createしたオブジェクトが直後にリストに出ない • 後続ジョブが前段の出力を使うときに問題 • renameが高コスト – キーの変更はできない – なので新規オブジェクトにデータコピーして元を削除 – ディレクトリのrenameはその繰り返し
  • 19. © 2018 NTT DATA Corporation 19 S3Guard: Improved Consistency for S3A • HADOOP-13345 • S3AFileSystemの一貫性を改善するアドオン – createしたファイルが確実にlsに出てくる • 補助的なメタデータ置き場としてDynamoDBを利用 – create: S3にオブジェクト作成後、DynamoDBに記録 – listStatus: S3(キー一覧)とDynamoDBの両方を見る • inspired by EMRFS and s3mper – https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-fs.html – https://github.com/Netflix/s3mper https://issues.apache.org/jira/secure/attachment/12821464/S3GuardImprovedConsistencyforS3AV2.pdf
  • 20. © 2018 NTT DATA Corporation 20 HDFSとFileSystem API まとめ • FileSystem APIは各種データストアへのアクセスを提供 – オブジェクトストレージのサービスも使える – アプリケーションをデータストア透過的に書ける – データストアの併用もできる • HDFSならではのポイント – ファイルシステムのセマンティクス • 一貫性があり高速なメタデータ管理 • 細かいAPI(read, write, fsync (HBaseの項で後述) – データローカリティもあるよ
  • 21. © 2018 NTT DATA Corporation 21 HBase
  • 22. © 2018 NTT DATA Corporation 22 HBaseの概要 • 分散キーバリューストア – キーのレンジパーティショニングでデータを分散 – プリミティブなAPI(put, get, scan, batch) – スケーラブル • データ増加に応じてテーブルを自動分割 • ノード間で自動rebalance • HDFS上に実装 – HADOOP-1045: Add contrib/hbase, a BigTable-like online database. – データファイルとWALファイルをHDFSに書く – 小データのランダムwrite/readが得意 • HDFSの苦手なワークロードをカバー NameNode RegionServer RegionServer RegionServer HMaster DataNode DataNode DataNode
  • 23. © 2018 NTT DATA Corporation 23 HBaseのデータモデル row family:f1 family:f2 qualifier:a qualifier:b qualifier:c qualifier:d r1 a1 b1 c1 d1 r2 b2 d2 $ hbase o.a.h.h.io.hfile.HFile -f .../f1/2c15a -p K: r1/f1:a/1540305882646/Put/vlen=2/seqid=4 V: a1 K: r1/f1:b/1540305889773/Put/vlen=2/seqid=5 V: b1 K: r2/f1:b/1540305914939/Put/vlen=2/seqid=6 V: b2 $ hbase o.a.h.h.io.hfile.HFile -f .../f2/2c15a -p K: r1/f2:c/1540305975753/Put/vlen=2/seqid=7 V: c1 K: r1/f2:d/1540305981923/Put/vlen=2/seqid=8 V: d1 K: r2/f2:d/1540306017649/Put/vlen=2/seqid=9 V: d2 論理的な行 atomicに更新可能 テーブルは サイズベース で水平分割
  • 24. © 2018 NTT DATA Corporation 24 HBaseのWAL書き込み • HDFSのhflush/hsyncを利用 – HADOOP-1700: Append to files in HDFS – HADOOP-2657: Enhancements to DFSClient to support flushing data at any point in time • fsyncに相当: ファイルをcloseせずwriteをdurableに • WALエントリのwrite確定後にクライアントにレスポンス DataNode NameNode DataNode Client DataNode write ack write IBR addBlock LocatedBlock write ack ackwrite済みのデータの ackが戻るまで待つ hsyncだとackを返 す前にfsync
  • 25. © 2018 NTT DATA Corporation 25 HBase on Amazon S3 • HBASE-17437: Support specifying a WAL directory outside of the root directory – contributed by AWS – https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hbase-s3.html <property> <name>hbase.rootdir</name> <value>s3a://mybucket/hbase-root</value> </property> <property> <name>hbase.wal.dir</name> <value>hdfs://mycluster/hbase-wal</value> </property>
  • 26. © 2018 NTT DATA Corporation 26 HBase 1.0 API • APIをクリーンアップ – HBASE-10479: HConnection interface is public but is used internally, and contains a bunch of methods – HBASE-12127: Move the core Connection creation functionality into ConnectionFactory – .......... • Googleのエンジニアが協力 • HBaseのアプリがそのままCloud Bigtableに接続可能 – ConnectionFactgory#createConnectionが返すオブジェクトを切り替え – 利用できないAPIもある • https://cloud.google.com/bigtable/docs/hbase-differences <property> <name>hbase.client.connection.impl</name <value>com.google.cloud.bigtable.hbase1_x.BigtableConnection</value> </property>
  • 27. © 2018 NTT DATA Corporation 27 Coprocessor • HBASE-2000: Coprocessors • サーバプロセス内で任意の処理を実行する機構 – しくじればサーバプロセスは落ちる • Endpoint: ストアドプロシージャのようなもの • Observer: トリガーのようなもの • MasterObserver • RegionObserver • RegionServerObserver • WALObserver • ... • HBase自身も活用 – 既存コードと新規機能を完全分離できる
  • 28. © 2018 NTT DATA Corporation 28 RegionObserverのメソッド preAppend preAppendAfterRowLock preBatchMutate preBulkLoadHFile preCheckAndDelete preCheckAndDeleteAfterRowLock preCheckAndPut preCheckAndPutAfterRowLock preClose preCommitStoreFile preCompact preCompactScannerOpen preCompactSelection preDelete preExists preFlush preFlush preFlushScannerOpen preGetOp preIncrement preIncrementAfterRowLock preMemStoreCompaction preMemStoreCompactionCompact preMemStoreCompactionCompactScannerOpen preOpen prePrepareTimeStampForDeleteVersion prePut preReplayWALs preScannerClose preScannerNext preScannerOpen preStoreFileReaderOpen preStoreScannerOpen preWALRestore postAppend postBatchMutate postBatchMutateIndispensably postBulkLoadHFile postCheckAndDelete postCheckAndPut postClose postCloseRegionOperation postCommitStoreFile postCompact postCompactSelection postDelete postExists postFlush postFlush postGetOp postIncrement postInstantiateDeleteTracker postMemStoreCompaction postMutationBeforeWAL postOpen postPut postReplayWALs postScannerClose postScannerFilterRow postScannerNext postScannerOpen postStartRegionOperation postStoreFileReaderOpen postWALRestore
  • 29. © 2018 NTT DATA Corporation 29 ACL • HBASE-3025: Coprocessor based simple access control • 各種処理の前後でアクセス制御 • 後にCell単位でも制御可能に – HBASE-7662: [Per-KV security] Per cell ACLs stored in tags ... <property> <name>hbase.coprocessor.master.classes</name> <value>org.apache.hadoop.hbase.security.access.AccessController</value> </property> <property> <name>hbase.coprocessor.regionserver.classes</name> <value>org.apache.hadoop.hbase.security.access.AccessController</value> </property>
  • 30. © 2018 NTT DATA Corporation 30 MultiRowMutationEndpoint • HBASE-5229: Provide basic building blocks for "multi-row" local transactions. • 同一region内の複数行をatomicに更新する – 本体(HRegion)への機能追加だがpublicなAPIにしたくないのでEndpointを利用 • metaテーブルの操作のために作った – assignやsplitのときmetaに複数行をatomicにputしたい • 昔はZooKeeperで制御: see HBASE-11059: ZK-less region assignment – metaテーブルはsplitされない • 普通のテーブルで使うにはRegionSplitPolicyによる工夫が必要 return TableDescriptorBuilder.newBuilder(TableName.META_TABLE_NAME) ... .setCoprocessor(CoprocessorDescriptorBuilder.newBuilder( MultiRowMutationEndpoint.class.getName()) .setPriority(Coprocessor.PRIORITY_SYSTEM) .build());
  • 31. © 2018 NTT DATA Corporation 31 Apache Tephra • TransactionAwareHTable implements Table • cellのタイムスタンプにトランザクションIDを埋め込む public RegionScanner preScannerOpen(ObserverContext<RegionCoprocessorEnvironment> e, Scan throws IOException { Transaction tx = getFromOperation(scan); if (tx != null) { projectFamilyDeletes(scan); scan.setMaxVersions(); scan.setTimeRange(TxUtils.getOldestVisibleTimestamp(ttlByFamily, tx, readNonTxnData), TxUtils.getMaxVisibleTimestamp(tx)); Filter newFilter = getTransactionFilter(tx, ScanType.USER_SCAN, scan.getFilter()); scan.setFilter(newFilter); } return s; <property> <name>hbase.coprocessor.region.classes</name> <value>org.apache.tephra.hbase.coprocessor.TransactionProcessor</value> </property>
  • 32. © 2018 NTT DATA Corporation 32 HBaseまとめ • Google Cloud BigtableはHBase APIをサポート – アプリケーションをBigtable透過的に書ける • HBaseならではのポイント – フルセットのHBase API – Coprocessorによる高い拡張性 – それを活かして作られたツール群
  • 33. © 2018 NTT DATA Corporation 33 Kudu
  • 34. © 2018 NTT DATA Corporation 34 Kuduの概要 • 分散Columnarストア – Analytics向け: 構造化データに対する高速なscan – INSERT/UPDATEをサポート • SQL処理系は提供しない – API(insert, update, scan)でデータにアクセス – SQL処理系から使われることを想定 – Impalaが標準SQLエンジン的な扱い id(pk): int64 ts:timestamp foo:string 1 1111111 f 2 2222222 ff 3 3333333 fff
  • 35. © 2018 NTT DATA Corporation 35 更新を実現する仕組み • HBaseと同じLSM-x – データファイルはrandom updateできない/しない – 書き込みはメモリに -> 溜まったらファイルに書き出す – 読み込みはメモリとディスクの両方みる – データファイルはときどきまとめつつゴミ掃除 • HBaseと同じようにHDFS上に作れそうだが HFile CFile HFile Cfile MemStore HFile CFile readwrite flush compaction
  • 36. © 2018 NTT DATA Corporation 36 HBaseとの違い • HDFSやZooKeeperに非依存 – 他のミドルウェアに依存するとバージョン間整合の維持が厄介 – コントロールできない部分が残る: 例) HBaseのデータローカリティ – スピード感が落ちる: 例) HDFSに修正を提案しても反応が鈍い – 必要な機能(leader electionとデータ冗長化)はRaft実装を作って賄う • JavaではなくC++で実装 – ヒープサイズの上限に縛られない(オフヒープは煩雑) – OS/HWをフル活用できない(JNIは煩雑) • Kudu作者はもともとHadoopおよびHBaseのコア開発者 – あえての選択 – 過去にRaftを参考にNameNode-HA(QJM+JournalNode)を作った • HDFS-3077: Quorum-based protocol for reading and writing edit logs
  • 37. © 2018 NTT DATA Corporation 37 Kuduのテーブル分割 • KUDU-818: Support table partitioning other than PK range partitioning • RangeパーティショニングとHashパーティショニング • 動的分割ではない – hashのバケット数は後から変えられない – rangeは手動で追加、削除可能 • 組み合わせ可能: rangeは1つ、hashは多次元化できる (2016/01, 333) (2017/05, 333) (2018/04, 333) (2016/02, 222) (2017/04, 222) (2018/08, 222) (2016/03, 111) (2017/03, 111) (2018/12, 111) hash range 2016 2017 2018
  • 38. © 2018 NTT DATA Corporation 38 kudu-spark • Spark SQLのData Sourcesに対応 • 基本的なfilterはプッシュダウンされる – o.a.spark.sql.sources.Filter => o.a.kudu.client.KuduPredicate • KuduのJava APIと併用もできる spark.read.options(Map("kudu.master" -> "lh","kudu.table" -> "foo")) .kudu.as[Foo].foreachPartition { it => foobar(it, kuduContext) } ... def foobar(it: Iterator[Foo], kc: KuduContext): Unit = { val client = kc.syncClient val session = client.newSession() val bar = client.openTable("bar") while(it.hasNext) { val f = it.next val b = bar.newUpdate() b.getRow.addLong("a", f.id) ...
  • 39. © 2018 NTT DATA Corporation 39 Kuduのconsistency • KUDU-430: Consistent Operations – Analyticsでもイベントの順序関係が重要なケースのために • timestampベースの仕組みを提供 – Read: • READ_LATEST: 最新のcommit済データを読む • READ_AT_SNAPSHOT: scannerにセットしたタイムスタンプ時点のデータを読む • READ_YOUR_WRITES: 自分のwriteが読めるようなタイムスタンプを自動セット – READ_AT_SNAPSHOTのバリエーション – KUDU-1704: Add a new read mode to perform bounded staleness snapshot reads – Write: • CLIENT_PROPAGATED: クライアント間で順序を保つためにtimestampをやりとり • COMMIT_WAIT: ノード間の時刻ずれ分commitを待つ • 複数行をatomicに更新する仕組みは(まだ)ない
  • 40. © 2018 NTT DATA Corporation 40 Kuduまとめ • SQLだと...もともと透過的に使いやすい • Kuduならではのポイント – データを随時追加、更新可能 – 柔軟なテーブル分割戦略 – SQLエンジンと疎結合 • SparkやMapReduceからの利用 • データローカリティもあるよ – 一貫性まわりの機能
  • 41. © 2018 NTT DATA Corporation 41 おわりに
  • 42. © 2018 NTT DATA Corporation 42 おわりに • クラウドサービス充実した • それでもHadoopは役に立つ – クラウドサービスを透過的に活用できるAPI – バックグラウンドの知識 • Hadoopはオープンソースソフトウェア – 中が見えるっていいよね – ロマンあふれる魔改造も
  • 43. © 2018 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。