問題タブ [elastic-map-reduce]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hadoop - EMR で開いているファイルが多すぎます
レデューサーで次の例外が発生しています。
レデューサーあたり約 10,000 個のファイルが作成されています。各ボックスの ulimit を設定する方法はありますか。
次のコマンドをブートストラップ スクリプトとして使用してみました: ulimit -n 1000000
しかし、これはまったく役に立ちませんでした。
/usr/lib/hadoop/hadoop-daemon.sh の ulimit コマンドを置き換えるために、ブートストラップ アクションで次のことも試しました。
しかし、それでもマスターノードにログインすると、ulimit -n が 32768 を返すことがわかります。また、/usr/lib/hadoop/hadoop-daemon.sh で目的の変更が行われ、ulimit -n があったことも確認しました。 134217728。
このための Hadoop 構成はありますか? または、これに対する回避策はありますか?
私の主な目的は、各レコードの ID に従ってレコードをファイルに分割することです。現在、15 億のレコードがあり、確実に増加する可能性があります。
このデーモンが各スレーブで実行される前に、このファイルを編集する方法はありますか?
mysql - ロード バランシング カスケード JDBCTap for MySQL
各クエリが数百万行を返すことができる MYSQL データベースに SELECT ステートメントを発行するカスケード アプリケーションを作成することを検討しています。
ここに示すように、各データベースは N 個のスレーブと 1 つのマスターに存在します。
JDBCTap では、1 つのホスト名しか渡すことができないことがわかります。これは、すべてのマッパーが単一のスレーブに接続しようとすることを意味します (他の (N-1) スレーブはアイドル状態です)。
スレーブの前にロード バランサーがないと仮定すると、N 個のスレーブ全体にマッパーの接続を分散できる Java パッケージ/モジュール/プロキシ (または、カスタマイズされた JDBCTap 実装) を使用できますか?
これを行うと思われるハードウェア プロキシを使用したサンプル スクリプトの詳細は、http: //blog.netoearth.com/html/201006/building-a-mysql-load-balancing-proxy-with-trafficscript.htmにあります。
そのようなものが存在しない場合は、次のアルゴリズムを使用して、独自の JDBCTap (マッパーからの接続を N 個のスレーブに分散させる) を作成する必要があります。
- 外部データベース (同時書き込み/更新を適切にサポートするもの) に N 個のスレーブのリストを保持します。
- 各スレーブに接続したマッパーのカウンターを持っている
- マッパーがスレーブに接続する必要があるたびに、このデータベースにクエリを実行して、負荷が最も少ない (接続されているマッパーの数が最小である) スレーブを見つけます。衝突時のランダムタイブレーク。
これは良いアイデアのように聞こえますか?上記で言及した「同時書き込み/更新を適切にサポートする」外部データベースは何でしょうか? (Cassandra、VoltDB など)
apache-pig - Amazon GUIを使用せずにElasticMapReduceで実行中のPigバッチジョブを自動化するにはどうすればよいですか?
.pigファイルにいくつかの豚のバッチジョブがあり、EMRで1時間に1回程度自動的に実行したいと思っています。ここでそれを行うためのチュートリアルを見つけましたが、それは私がセットアップするすべてのジョブにAmazonのGUIを使用する必要があり、それは私が本当に避けたいです。Whirrを使用してこれを行う良い方法はありますか?またはRubyElastic-mapreduceクライアント?私はすべてのファイルをs3に入れており、使用する必要のある関数を備えたいくつかの豚の瓶も持っています。
amazon-s3 - AWS EMR の Hadoop 出力で LZO を使用する場合、将来の自動分割のために (S3 に保存された) ファイルにインデックスを付けますか?
S3 に保存されている Elastic Map Reduce ジョブの出力で LZO 圧縮を使用したいのですが、ファイルが自動的にインデックス化され、このデータで将来のジョブが実行されるとファイルが複数のタスクに分割されるかどうかは明確ではありません。
たとえば、私の出力が 1 GB の LZO ファイル内の TSV データの行の束である場合、将来のマップ ジョブは 1 つのタスク、または (1 GB/ブロック サイズ) タスクのようなもの (つまり、ファイルが圧縮されていないときの動作) のみを作成します。 、またはディレクトリに LZO インデックス ファイルがあった場合)?
編集:これが自動的に行われない場合、出力に LZO インデックスを付けるには何が推奨されますか? ファイルを S3 にアップロードする前にインデックスを作成しますか?
hadoop - Hadoop用のDynamoDBInputFormat
Hadoopmapreduceを使用してAmazonDynamoDBに保持されているデータを処理する必要があります。
インターネットでDynamoDBのHadoopInputFormatを検索していましたが、見つかりませんでした。Dynamo DBに慣れていないので、DynamoDBとHadoopに関連するトリックがあると思いますか?この入力フォーマットの実装がどこかにある場合は、それを共有していただけますか?
session - セッション化されたWebログ、前のドメインと次のドメインを取得
大量のウェブログデータがあります。セッション化する必要があります。また、セッションごとに前のドメインと次のドメインを生成する必要があります。AWSEMRのインタラクティブなジョブフローを介してテストしています。
現在、次のコードを使用してデータをセッション化することができます:http: //goo.gl/L52Wf。UDFのコンパイルと使用に慣れるのに少し手間がかかりましたが、私はそれまでにそれを達成しました。
入力ファイルのヘッダー行と最初の行(タブ区切り)は次のとおりです。
これはリレーションからのタプルSESSIONS
です(リレーションを取得する手順を以下に示します)。
これは、テストデータをセッション化するために現在実行しているものとほぼ同じです。
(Bでの手順は、日付を最初の位置に移動することです。Cでの手順は、ファイルヘッダーをフィルターで除外することです)
ここからこれを進める正しい方向まで迷っています。
豚のスクリプトとのSESSIONS
関係を繰り返して、次のドメインと前のドメインを取得できますか?カスタムUDFを作成し、それに関係をforeach
渡す方がよいでしょうか?SESSIONS
(私自身のUDFを書くことは冒険になるでしょう!..)
アドバイスをいただければ幸いです。誰かがやるべきでないことを勧めることができたとしても、同じように役立つかもしれないので、私はジャンクアプローチを研究する時間を無駄にしません。私はHadoopとpigスクリプトにまったく慣れていないので、これは間違いなく私の得意分野の1つではありません(まだ..)。
hadoop - AWS Elastic Mapreduce ジョブから Zookeeper にアクセスできますか?
Hadoop は初めてで、AWS Elastic Mapreduce で実行しています。
Hadoop でクラスター全体のアトミック カウンターが必要であり、これには Zookeeper を使用するよう提案されました。
Zookeeper は Hadoop スタックの一部であると思いますが (そうですか?)、クラスター全体のカウンターを設定および更新するには、Elastic Mapreduce ジョブからどのようにアクセスすればよいでしょうか?
amazon-web-services - Elastic MapReduce ジョブ フローをスケジュールする方法
1 時間ごとにすべての dynamodb テーブル データを s3 ファイルにダンプしたいと考えています。エラスティック mapreduce ジョブ フローをスケジュールする最良の方法は何ですか? Amazon Simple ワークフロー サービスで実行できますか?
hadoop - 少数のリデューサーが残っている大規模な mapreduce ジョブの場合、このジョブを安全にダウンサイズできますか?
Chris Smith がこの質問に答えて、投稿してもいいと言いました。
200 ノードの mapreduce ジョブがあり、実行中の削減ジョブが 3 つしか残っていない場合、マスターと実行中のジョブを含む 3 つを除くすべてのノードをオフにしても安全ですか? さらに、交換が必要な不良ノードの場合に備えて、さらにいくつかの可能性がありますか?
この質問に対する答えが「はい」の場合、emr がほとんどのノード ノードを使用していないときに自動的にオフにしないのは奇妙です。
最近、ほとんど終了したジョブがいくつかありましたが、いくつかの削減が残っています。使用されていないノードが稼働したままになるため、コストがかかっていると思います。
私が考えることができるこれらの問題があります:
-- データはいつ S3 にコピーされますか? reduce の実行に関してノードが使用されていない場合でも、S3 へのコピーにノードが必要になる可能性はありますか? その場合、私の質問に対する答えは、基本的にノードを安全にオフにできるわけではないということです。3 つのジョブのいずれかが失敗した場合はどうなりますか? マスター/ジョブ コーディネーターは、それを別のノードに再割り当てする必要があります。どのボックスが稼働しているかを追跡でき、遮断されたボックスに誤って割り当てられない限り、安全だと思います。
hadoop - Hadoopを使い始める最も簡単な方法
MapReduceジョブを送信する最も簡単な方法を探していました。
Heroku(Rubyに対するもの)やpicloud.comなどの複雑さ(または単純さ)が似ているプラットフォームを探しています。
アイデアは、初心者がHadoopクラスターのセットアップの複雑さに対処することなくMapReduceジョブを送信できる場所です。Elastic Map Reduceは近づいていますが、インスタンスをセットアップするための起動時間は大幅に短縮されています。
つまり、基本的には、MapReduceと同等のpicloudを実行した人を探していました。
私も次の答えを読みましたが、私が探していたものが見つかりませんでした:これとこれ
ありがとう。