Apache Spark 2.xでKuduを利用する

以前のブログ(Apache SparkでApache Kuduを利用する)の Spark2.x版です。前回のブログからあまり変わっていませんが、前回のブログの手順はSpark2.xで動作しなかったという話を聞いたのでアップデートしておきます。
なお、昨日 Kudu 1.7 がリリースされました!今回の特徴は

  • (ついに)DECIMAL型をサポート!
  • 可用性とパフォーマンスの改善

などです。


“Apache Spark 2.xでKuduを利用する” の続きを読む

Apache Hadoop 3.0.0 リリース

(2017/12/15更新)
本日 Apache Hadoop v3.0.0 が GA になりました!
https://blogs.apache.org/foundation/entry/the-apache-software-foundation-announces26
ハイライトは下記の通り(上記サイトから抜粋して翻訳)

  • HDFS のイレイジャーコーディング — データの耐久性を向上させながらHDFSのストレージコストを軽減
  • YARN Timeline Service v.2 (プレビュー) —タイムラインサービスのスケーラビリティ、信頼性、ユーザービリティを向上
  • YARN リソースタイプ —機械学習やコンテナワークロードとのより良い統合を行うため、ディスクとGPUなどの追加リソースのスケジューリングを有効に。(訳注:今まではCPUとメモリのみ)
  • YARN と HFDS サブクラスターのフェデレーションは、数万台のマシンで Hadoop を透過的にスケール
  • Opportunistic (オポチュニスティック?)コンテナの実行により、短命(短時間)のコンテナのリソース使用率の改善とタスクスループットが向上。従来のcentral (中央?)スケジューラーに加え、YARN は opportunistic コンテナの分散スケジュールもサポート
  • Amazon S3 (S3Gurarrd)、Microsoft Azure Data Lake、Aliyun オブジェクトストレージシステムなどのクラウドストレージシステムの機能とパフォーマンスが向上

HDFSのイレイジャーコーディングに加え、YARNにもいろいろな機能が増えているようで楽しみですね
Update: Hadoop 3.0.0 のドキュメントが公開されています
http://hadoop.apache.org/docs/r3.0.0/

ビッグデータ用のデータ管理ツール

先日開催された Cloudera World Tokyo 2017 にて、「Clouderaが提供するエンタープライズ向け運用、データ管理ツールの最新情報の使い方」というセッションで講演させていただきました。セッション申し込みが200名超(汗)と緊張感がありましたが、以下がその内容です。
“ビッグデータ用のデータ管理ツール” の続きを読む

Cloudera World Tokyo 2017 開催

2017/11/07に、秋恒例のイベント「Cloudera World Tokyo 2017」が開催されます。
http://www.clouderaworldtokyo.com/
今年は、”ビジネスを変える「データの力」”をテーマに、技術からビジネスまで、例年にも増して多種多様なセッションが用意されているようです。
タイムテーブルはこちら
 
参加費無料。定員の倍に達しているセッションもあるようなので、見たいセッションがある方はお早めに。
ハッシュタグは #CWT2017

HDFSの新しい機能3つ

HDFSは分散ファイルシステムとして確固たる地位を築きましたが、NFSのサポートやスナップショットなど、多くの機能が追加されています。
その中で、今後 Hadoop 3 で重要となる「HDFSのイレイジャーコーディング」を含めたClouderaのHDFSに関するブログ記事を日本語に翻訳しました。
全3回にわたって掲載する予定なので、興味があればご覧ください。
第1弾:Apache HadoopのHDFS Erasure Codingの紹介
第2弾:How-to: Apache Hadoopで新しいHDFS DataNodeディスク間バランサを使用する
第3弾:HDFSのメンテナンスステート

Apache SparkでApache Kuduを利用する

Apache Kudu 1.3

最近Apache Kuduのリードとライトの流れについてのブログが公開され、昨日は日本語でもウェビナーが開催されたりと盛り上がってきた「分散ストレージエンジン」のApache Kuduですが、SQLでのアクセスにはApache Impala (Incubating) との組み合わせが便利です。他方、Apache Sparkからも簡単に利用できます。
Kudu Quickstart VMを利用して、まずはチュートリアルにしたがって Impala からデータを投入し、クエリした後にSparkのDataFrameからアクセスしてみました。以下の手順は仮想マシン上で試せるほど簡単なので、プレミアムフライデーで帰る前に試せるぐらい簡単ですね。

1. Kudu Quickstart VMのチュートリアルを実行する

チュートリアルに従ってデータを作成しました。
なお、チュートリアルと結果が違うのは、データ投入中にDELETE の実験をしたからです。
[code]
[demo@quickstart ~]$ impala-shell
Starting Impala Shell without Kerberos authentication
Connected to quickstart.cloudera:21000
Server version: impalad version 2.8.0-cdh5.11.0 RELEASE (build e09660de6b503a15f07e84b99b63e8e745854c34)
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v2.8.0-cdh5.11.0 (e09660d) built on Wed Apr 5 19:51:24 PDT 2017)
When pretty-printing is disabled, you can use the ‘–output_delimiter’ flag to set
the delimiter for fields in the same row. The default is ‘,’.
***********************************************************************************
[quickstart.cloudera:21000] > SELECT * FROM sfmta ORDER BY speed DESC LIMIT 1;
Query: select * FROM sfmta ORDER BY speed DESC LIMIT 1
Query submitted at: 2017-04-27 22:31:57 (Coordinator: http://quickstart.cloudera:25000)
Query progress can be monitored at: http://quickstart.cloudera:25000/query_plan?query_id=14bb0d30cdfc1d4:59d3e08a00000000
+————-+————-+——————–+——————-+——————-+———+
| report_time | vehicle_tag | longitude | latitude | speed | heading |
+————-+————-+——————–+——————-+——————-+———+
| 1357022016 | 8522 | -122.4538803100586 | 37.74539184570312 | 65.27799987792969 | 24 |
+————-+————-+——————–+——————-+——————-+———+
Fetched 1 row(s) in 0.42s
[quickstart.cloudera:21000] > SELECT COUNT(*) FROM sfmta;
Query: select COUNT(*) FROM sfmta
Query submitted at: 2017-04-27 22:33:03 (Coordinator: http://quickstart.cloudera:25000)
Query progress can be monitored at: http://quickstart.cloudera:25000/query_plan?query_id=e4812eb162470dd:8d087b0200000000
+———-+
| count(*) |
+———-+
| 842279 |
+———-+
Fetched 1 row(s) in 0.20s
[quickstart.cloudera:21000] >
[/code]

2. Apache Spark からアクセスする

Spark統合の参考ページはこちら
なお、テーブル名は Kudu の webui で調べました。
http://quickstart.cloudera:8051/
[code]
$ spark-shell –packages org.apache.kudu:kudu-spark_2.10:1.1.0
(略)
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ ‘_/
/___/ .__/\_,_/_/ /_/\_\ version 1.6.0
/_/
Using Scala version 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_67)
Type in expressions to have them evaluated.
Type :help for more information.
17/04/27 22:52:54 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
Spark context available as sc (master = local[*], app id = local-1493358775875).
17/04/27 22:52:57 WARN shortcircuit.DomainSocketFactory: The short-circuit local reads feature cannot be used because libhadoop cannot be loaded.
SQL context available as sqlContext.
scala> import org.apache.kudu.spark.kudu._
import org.apache.kudu.spark.kudu._
scala> val df = sqlContext.read.options(Map("kudu.master=" -> "quickstart.cloudera:7051","kudu.table" -> "impala::default.sfmta")).kudu
df: org.apache.spark.sql.DataFrame = [report_time: bigint, vehicle_tag: int, longitude: float, latitude: float, speed: float, heading: float]
scala> df.count
res0: Long = 842279
scala> df.show(5)
+———–+———–+———-+——–+——+——-+
|report_time|vehicle_tag| longitude|latitude| speed|heading|
+———–+———–+———-+——–+——+——-+
| 1356998401| 1479|-122.44695| 37.7222| 0.0| 51.0|
| 1356998401| 1525|-122.39674|37.79291| 0.0| 226.05|
| 1356998401| 1532|-122.45711|37.75034|14.305| 218.33|
| 1356998401| 1549|-122.43752| 37.7611| 0.0| 49.24|
| 1356998401| 5453|-122.42894|37.76705| 0.0| 0.0|
+———–+———–+———-+——–+——+——-+
only showing top 5 rows
scala> df.sort($"speed".desc).select("longitude","latitude","speed").show(3)
+———-+——–+——+
| longitude|latitude| speed|
+———-+——–+——+
|-122.45388|37.74539|65.278|
|-122.48861| 37.9074| 62.5|
|-122.48026|37.89245|55.833|
+———-+——–+——+
only showing top 3 rows
[/code]

まとめ

SQLでアクセスしたい場合はImpalaから行うと便利ですが、データエンジニアリングを行いたい場合など、SQL以外でのアクセスにはSparkも便利ですね。
そうそう、Apache Sparkのパフォーマンスのベンチマーク結果を翻訳して公開しました。興味がある方はこちらもどうぞ。

Apache Impala、同時実行時の速度において従来の分析データベースやSQL on Hadoopに圧勝

 

Cloudera 5.11リリース

Cloudera 5.11が出たので久しぶりの更新です。
Hadoopも11年目を迎え、日本でも幅広い業種で使われるようになりました。数年前と比較すると圧倒的に使いやすくなっているので、過去に評価してそのままになっている方、既存の基盤で困っている方、そろそろ改めて検証しなおしてみてはいかがでしょうか?
例えば数年前と比べると、 “Cloudera 5.11リリース” の続きを読む

CERNで実施したベンチマークが公開されています

CERNが公開した、

「Apache Hadoopエコシステムにおける、異なるファイル形式とストレージエンジンのパフォーマンス比較」

を日本語化して公開しました。
Apache Avro, Apache Parquet, Apache HBase, Apache Kuduそれぞれの特性が興味深いです。取り込み重視なのか分析重視なのか、長期保存目的か、はたまた折衷なのかによって何を選択するべきかの参考になります。
これは必読です!