3日目の12/3を担当する@marblejenkaです。今日は、スタンドアロンモードと義人分散モード、完全分散モードの違いを調べます。hadopoを使ったアプリケーションを開発していると、だいたいどのモードも試してみたことはあると思いますが、それぞれのモードの挙動の違い、とくに疑似分散モードと完全分散モードの違いはあまり正確には把握していないなあということで。distributed特に記述はないけど、まあ普通にマスター1以上、スレーブ2以上な感じの構成のことを指すものかなあと。2以上?という感じで説明されることが多いと思います。・クライアントからのファイルシステムに対するアクセス・fs.default.nameの設定毎によるデーモンの挙動の違い・dfs.replicationの設定毎によるデーモンの挙動の違いこのへんの観点で簡単にソースを洗ってみることにしました。-lsくらいから追っかけていきます。bin/hadoopあたりをみると、org.apache.hadoop.fs.FsShellに飛んでいることがわかります。HDFSを見に行っているという感じです。Pathを生成するときのプロトコルに(指定がなければ)fs.default.nameが使用されるので、まあ各モードでそんなにおもしろい違いはないという感じです。"file:///")));}とかこんな感じのところで使われていますが(FS_DEFAULT_NAME_KEYは文字列の"fs.default.name")、URIで返してるのでファイルシステムをとるところが変わるだけかなあという感じ。これもそんなにおもしろい違いはないなあという感じです。言うと、org.apache.hadoop.fs.CommonConfigurationKeys.DFSConfigKeysがいろいろ泣けてくる感じです。FSEditLog.adjustReplication(replication);こんな感じでFSImageの値で上書きして無視するので、僕も無視します(inはfsimageのファイルのDataInputStream)。NamenodeFsck.Resultは表示用で情報をとってるだけなので無視します。DFSClientはファイルを作成する際に、NameNodeにいくつレプリカを複製するか情報を伝えるために使います。あとは、レプリカ数をこいつからとれるような口があって、ジョブの履歴にそのときのレプリケーション数を出したりとか、FileSystemにレプリカ数を伝えたりしているぽいです。IOException;こんな感じのレプリケーション数を指定するインターフェイスがありますが、ローカルファイルでは華麗に無視します。statistics);}また、スタンドアロンモードではレプリカ数をチェックするNameNodeのプロセスも起動させないので、ふつうにふつうのローカルファイルシステムを参照するものとして使えているようです。余談ですが、dfs.replicationって0でも動くかなあと思って試してみました。レプリカ数というか、同じブロックをトータルでいくつ持つか数的な感じですかね。org.apache.hadoop.ipc.Server$Handler.run(Server.java:1428)2ということで、疑似分散モードと完全分散モードには大きな違いはないようで、スタンドアロンモードとは前者のふたつはFileSystemのレイヤで差異を吸収している、という感じでした。思ったよりおもしろくない感じでした。3とか出てきてもいいなあとか思ったのですが。最新記事2019年をふりかえってみると2018年をふりかえってみると2017年をふりかえってみると2016年をふりかえってみると2015年をふりかえってみると月別アーカイブはてなブログをはじめよう!marblejenkaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。