Tech Blog 〜ぞうの日記

HadoopやLinux関連の技術的な内容の紹介です

HDFSのヘテロジニアス対応

HDFSとヘテロジニアスな構成

一般的に、Hadoopは同一構成のサーバを大量に並べる方が、運用が簡単です。非均一な構成は、特に設定ファイルの管理、チューニングが厄介です。 そんな中、HDFS-2832で「Enable support for heterogeneous storages in HDFS」というチケットを見つけました。これは、データノードを「単一のストレージ」として扱うのではなく、データノードを「ストレージのコレクション」として扱うところです。

ストレージのコレクション?

HDFSは、データノードが使用しているストレージの種類、ファイルシステムの種類に関与しません。つまり、/dev/sdaはHDDでext4、/dev/sdbはSSDでxfs、、という構成も可能です。これは良い点もあるのですが、例えば特定のデータはSSDに、それ以外はHDDに、というような書き込みを行うことはできません。 このチケットではHDFSにストレージの種類の情報を持たせる拡張を行い、上記のようなデータの種類によるストレージの選択や、ブロックのレプリケーションも一つはSSDに配置するなど、柔軟な構成が取れることを目指しているようです。 まだ先は長そうですが、SSDが普及してくるに従ってこのようなチケットが増えてきそうですね。

 

注)本家ブログは http://linux.wwing.netです。はてなブログはバックアップ/待避用のため、内容が古いことがあります。

Tux君のロゴ

偶然懐かしい人(@ksota_kstyleさん)にお会いしたので、何かカーネルネタを書かねば、、ということで簡単に。

Tux

Tux

 

Linux Kernel起動時にペンギンのロゴが表示されますが、このロゴはカーネルのどこに定義されているのでしょうか?ヒントはフレームバッファで表示しているところです。

続きを読む

Hadoopのセキュリティ

Hadoopのセキュリティについての雑記

認証についてはKerberosを使うというのがスタンダードですが、暗号化についても徐々に進んでいます。

ネットワークの暗号化

例えば、ネットワークの暗号化については下記のブログがお勧めです。
http://blog.cloudera.com/blog/2013/03/how-to-set-up-a-hadoop-cluster-with-network-encryption/

ファイルシステムの暗号化

ファイルシステム/ディスクの暗号化は現状対応していないので、LinuxのDevice Mapperを使用したdm-cryptや、eCryptfsの仕組みを利用するしかありません。

ところが先週 Jira に「Hadoop cryptographic file system」というチケット(HDFS-5143)が登録されました。今後どうなるかわかりませんが要注目です。

Sentry

話は逸れますが、Hive/Cloudera Impala用の認可モジュール、SentryApacheのトッププロジェクトを目指しています。Hadoopがエンタープライズ用途での利用が増えるに従いセキュリティはさらに重要な要件となります。今後の展開が楽しみです。

 

※本家は linux.wwing.netです

Giraph関係のメモ

Facebookのグラフ処理はApache Giraph

たまたまTwitterでGiraphの記事を見つけたのでメモ。

Facebookがグラフ処理にApache Giraphを使っているという記事

https://m.facebook.com/notes/facebook-engineering/scaling-apache-giraph-to-a-trillion-edges/10151617006153920

FacebookはGiraphに貢献しているようです。この記事ではGiraph関連の話題が中心ですが、個人的に少々興味深かったのは、CoronaではなくYARNというところ(Hadoopからみて)。GiraphがYARNに対応したからでしょうね

https://issues.apache.org/jira/browse/GIRAPH-13

NSAはAccumuloを使っている?

関連するスレッドで、NSAがグラフ処理にApache Accumuloを使っているというスライドを発見。

http://es.slideshare.net/daniel_bilar/big-graph-analysis-issues-nsa

この手法は、CyberAgentのHornetに近いのかも?(Hornetではグラフ処理にHBaseを使用している)

HBaseを使ったグラフDB、Hornet

http://www.slideshare.net/brfrn169/hbasedbhornet-16105526

 

 

 余談

いよいよ本家のサーバ(linux.wwing.net)を移行することになりました。うまく移行できると良いんですが、、、だめならこちら(Hatena Blog)が本家になるかもしれません。

HDFSのショートサーキット雑感

HDFSのShort-Circuit Local Readについてのブログ記事を読んで

先週お盆休みに公開されたブログ、「How Improved Short-Circuit Local Reads Bring Better Performance and Security to Hadoop」には興味深い内容が書いてあります。これは必読では?と思ったので、少しまとめてみます。

元々の処理

クライアントがHDFSからデータを読み出す場合、データノードとのネットワーク通信が発生します。これはシンプルですが、カーネル内でTCPソケットを保持しておくなどのオーバヘッドがかかります。(ブログ中の最初の図)

Short-Circuit Local Reads with HDFS-2246

このチケットでの改善は、クライアントとデータノードが同一マシンの場合、直接ローカルファイルシステムからデータを読み込むようにするというものです。(ブログの2番目の図)

この機能は既にCDH3u3以降でサポートされており、パフォーマンスに寄与しています。

 

しかし、クライアントがローカルファイルシステムから直接データを読み出すと言うことは、パーミッションなどのセキュリティ上問題が生じます。つまり、データノードのデータディレクトリにあるファイルが、クライアントから全て見えてしまうというセキュリティ上の問題でした。結果、全てのユーザーが恩恵に預かれるというものではありませんでした。

HDFS-347: Making Short-Circuit Local Reads Secure

幸いなことにLinuxには「file descriptor passing」という仕組みがあり、この機能を使うことで、安全にShort-Circuit Readを行うことができるようになりました(Windowsでも同様の仕組みがあるようです)

HDFS-347ではディレクトリ名をクライアントに直接返すのではなく、データノードがファイルをオープンし、メタ情報をクライアントに返して、クライアントはそのメタ情報を元にファイルを読み込む、という流れになります。。これにより、必要なファイルだけを安全に読み出させることができます。

(注:Java標準APIから利用できないため、JNIを使用する必要があります)

Caching File Descriptors

HDFSから何度も同じブロックを読み出す場合があります(HBaseなど)。Short-Circuit Local Readではブロックのパスをキャッシュしているので効果があります。ただ、キャッシュされているパス情報から、もう一度ファイルをオープン(reopen)する必要があるため、オーバヘッドがあります。この修正ではファイル記述子をキャッシュ(FileInputStreamCache)することにより、reopen, rereadが不要になるために効果があるようです。

ベンチマークの結果もHDFS-347が良い結果を出しているようですね。さらにHDFS-4697ではreadheadにより、さらにランダムアクセスでのパフォーマンスの効果が期待できますね。

 

なお、Cloudera ImpalaにはShort-Circuit Readが必須なのでご注意下さい。

Mandatory: Short-Circuit Reads

Enabling short-circuit reads allows Impala to read local data directly from the file system. This removes the need to communicate through the DataNodes, improving performance. This setting also minimizes the number of additional copies of data. Short-circuit reads requireslibhadoop.so(the Hadoop Native Library) to be accessible to both the server and the client.libhadoop.sois not available if you have installed from a tarball. You must install from an.rpm,.deb, or parcel to use short-circuit local reads.

 

 

Enterprisezine連載2回目

前回に引き続き、EnterprisezineのDBOnlineに記事が掲載されました!


Cloudera Managerはかなり良くできていますし、無償版でもかなり使えるので、疑心暗鬼な方もだまされたと思って一度使って下さい。きっと止められなくなる、、、はずですw。(ツールなので、嫌だったら使わなければ済みますし。。面倒ですが)

Hadoop運用管理の今―その2 Cloudera Managerを使ってみよう -

http://enterprisezine.jp/dbonline/detail/5027