BT

Spring for Apache Hadoop 1.0リリース

| 作者: Bienvenido David III フォローする 0 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2013年3月21日. 推定読書時間: 8 分 |

原文(投稿日:2013/03/13)へのリンク

 

SpringSourceはSpring for Apache Hadoop 1.0をリリースした。Spring for Apache Hadoopを使えば、開発者はSpring Frameworkを使ってHadoopアプリケーションを開発できる。また、Spring BatchとSpring Integrationとも簡単に統合できる。Spring for Apache HadoopはSpring Data umbrella projectのサブプロジェクトであり、オープンソースのApache 2.0ライセンスでリリースされている。

一般的に、Hadoopアプリケーションはコマンドラインユーティリティやスクリプトやコードの塊だ。Spring for Apache Hadoopが提供するのは、Hadoopアプリケーションを開発するための一貫性のあるプログラミングと宣言的構成モデルだ。HadoopアプリケーションをSpringのプログラミングモデル(依存性注入、POJO、ヘルパーテンプレート)を使って開発し、コマンドラインユーティリティではなく、Javaのアプリケーションとして実行できる。また、Spring for Apache HadoopはHDFSへの読み書き、MapReduceの実行、ジョブのストリーミングと化すケーディング、HBase、Hive、Pigを使った操作ができる。

主な特徴は、

  • Hadoopの連結やMapReduce、ストリーミング、Hive、Pig、Cascadingジョブの作成、構成、変数化を宣言的に構成できる。"ランナー"クラスが用意されており、Hadoopの操作を実行する。JobRunner、ToolRunner、JarRunner、HiveRunner、PigRunner、 CascadeRunner、HdfsScriptRunnerだ。
  • Groovy、JRuby、Jython、RhinoのようなJVMスクリプト言語を使ったHDFSへの包括的なデータアクセスのサポート。
  • PigとHive用のテンプレート、PigTemplateとHiveTemplate。このふたつのヘルパークラスは例外を解釈し、リソースを管理し、軽量オブジェクトマッピング機能を持つ。
  • HBaseの宣言的構成。また、HBaseTemplateでDAOをサポートする。
  • File System Shell (FsShell)やDistributed Copy (DistCp)のようなHadoop Toolsの宣言的なサポート。またプログラミングもできる。
  • セキュリティのサポート。Spring for Apache HadoopはHadoop実行環境のセキュリティの一貫性を認識する。したがって、ローカルの開発環境からケルベロス認証で守られたHadoopクラスタ環境への移行も透過的に実行できる。
  • Spring Batchのサポート。複数のステップが状態を維持しながら調整され、REST APIを使って管理されます。例えば、Spring Batchの大規模なファイルの処理を管理する能力はHDFSへファイルをインポートしたりエクスポートしたりするのに使える。
  • Spring Integrationのサポート。Spring Integrationを使えば、HDFSへ他のストレージに書き込まれたり読み込まれたりする前に変換されたりフィルタリングされたりするイベントストリームを処理できる。

次の記述は、Spring for Hadoopのブログと参照マニュアルから抜粋したサンプルだ。

MapReduce

	<!-- use the default configuration -->
	<hdp:configuration />

	<!-- create the job -->
	<hdp:job id="word-count" 
		input-path="/input/" output-path="/ouput/"
		mapper="org.apache.hadoop.examples.WordCount.TokenizerMapper"
		reducer="org.apache.hadoop.examples.WordCount.IntSumReducer" />

	<!-- run the job -->
	<hdp:job-runner id="word-count-runner" pre-action="cleanup-script" post-action="export-results" job="word-count" run-at-startup="true" />

HDFS

	<!-- copy a file using Rhino -->
	<hdp:script id="inlined-js" language="javascript" run-at-startup="true">
		importPackage(java.util)
		
		name = UUID.randomUUID().toString()
		scriptName = "src/main/resources/hadoop.properties"
		// fs - FileSystem instance based on 'hadoopConfiguration' bean
		fs.copyFromLocalFile(scriptName, name)
	</hdp:script>

HBase

	<!-- use default HBase configuration -->
	<hdp:hbase-configuration />
		
	<!-- wire hbase configuration -->
	<bean id="hbaseTemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate" p:configuration-ref="hbaseConfiguration" />
	// read each row from HBaseTable (Java)
	List rows = template.find("HBaseTable", "HBaseColumn", new RowMapper() {
		@Override
		public String mapRow(Result result, int rowNum) throws Exception {
			return result.toString();
		}
	}));

Hive

	<!-- configure data source -->
	<bean id="hive-driver" class="org.apache.hadoop.hive.jdbc.HiveDriver" />
	<bean id="hive-ds" class="org.springframework.jdbc.datasource.SimpleDriverDataSource" c:driver-ref="hive-driver" c:url="${hive.url}" />

	<!-- configure standard JdbcTemplate declaration -->
	<bean id="hiveTemplate" class="org.springframework.jdbc.core.JdbcTemplate" c:data-source-ref="hive-ds"/>

Pig

	<!-- run an external pig script -->
	<hdp:pig-runner id="pigRunner" run-at-startup="true">
		<hdp:script location="pig-scripts/script.pig"/>
	</hdp:pig-runner>

利用するにはSpring for Apache Hadoopをダウンロードするか、org.springframework.data:spring-data-hadoop:1.0.0.RELEASE Mavenアーティファクトを使うかする。Spring for HadoopのWordCountのサンプルも利用できる。YouTubeで紹介動画も見られる。

Spring for Apache HadoopにはJDK 6.0以上、Spring Framework 3.0 (推奨は3.2)以上、Apache Hadoop 0.20.2 (推奨は1.0.4)が必要。Hadoop YARN、NextGenまたは2.xは現時点ではサポートされていない。vanilla Apache Hadoop、Cloudera CDH3、CDH4、Greenplum HDなどのApache Hadoop 1.0.xのディストリビューションもサポートされないだろう。

より詳細な情報は、Spring for Apache Hadoop Reference ManualJavadocで確認できる。Spring for Apache HadoopのソースコードサンプルはGitHubで入手できる。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT