06 yarn是什么
7629 ワード
yarnクラスタには2つのロールがあります.
メインノード:ResourceManager 1台
スレーブノード:Node Manager N台
ResourceManagerは一般的に専用のマシンにインストールされています
Node ManagerはHDFSのdata nodeと重なるはずです
プロファイルの変更:
yarn-site.xml
各マシンにコピーします
次にhdp-04でhadoopのslavesファイルを修正しnodemanagerを起動するマシンに入れます
そしてhdp-04をすべてのマシンへの無密登録構成にします
スクリプトでyarnクラスタを起動できます.
sbin/start-yarn.sh
停止:
sbin/stop-yarn.sh
起動が完了すると、windowsでresourcemanagerのwebポートにブラウザでアクセスできます.
http://hdp-04:8088
resource manangerがすべてのnode managerノードを認識しているかどうかを確認します
まず、mapreduceプログラムのjobをyarnにコミットするクライアントクラス(テンプレートコード)を開発します.
l mapreduceプログラムの実行時に必要な情報(mapper、reducer、map、reduceで出力されるkvタイプ、jarパッケージが存在するパス、reduce taskの数、出力データを入力するパスなど)を説明します.
lプロジェクト全体のjarパッケージとともにyarnに情報を渡す
次に、プロジェクト全体(yarnクライアントクラス+mapreduceすべてのjarとカスタムクラス)をjarパッケージにします.
そしてjarパケットをhadoopクラスタのいずれかのマシンに転送する
最後に、jarパッケージの(YARNクライアントクラス)を実行します.
メインノード:ResourceManager 1台
スレーブノード:Node Manager N台
ResourceManagerは一般的に専用のマシンにインストールされています
Node ManagerはHDFSのdata nodeと重なるはずです
プロファイルの変更:
yarn-site.xml
yarn.resourcemanager.hostname
hdp-04
yarn.nodemanager.aux-services
mapreduce_shuffle
各マシンにコピーします
次にhdp-04でhadoopのslavesファイルを修正しnodemanagerを起動するマシンに入れます
そしてhdp-04をすべてのマシンへの無密登録構成にします
スクリプトでyarnクラスタを起動できます.
sbin/start-yarn.sh
停止:
sbin/stop-yarn.sh
起動が完了すると、windowsでresourcemanagerのwebポートにブラウザでアクセスできます.
http://hdp-04:8088
resource manangerがすべてのnode managerノードを認識しているかどうかを確認します
package cn.oracle.core;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
/**
* mapreduce job
* :
* 1、 job
* 2、 yarn , mapreduce 、
* @author ThinkPad
*
*/
public class JobSubmitter {
public static void main(String[] args) throws Exception {
// JVM , job HDFS
System.setProperty("HADOOP_USER_NAME", "root");
Configuration conf = new Configuration();
// 1、 job
conf.set("fs.defaultFS", "hdfs://hdp-01:9000");
// 2、 job
conf.set("mapreduce.framework.name", "yarn");
conf.set("yarn.resourcemanager.hostname", "hdp-04");
// 3、 windows job ,
conf.set("mapreduce.app-submission.cross-platform","true");
Job job = Job.getInstance(conf);
// 1、 :jar
job.setJar("d:/wc.jar");
// 2、 : job Mapper 、Reducer
job.setMapperClass(WordcountMapper.class);
job.setReducerClass(WordcountReducer.class);
// 3、 : job Mapper 、Reducer key、value
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
Path output = new Path("/wordcount/output");
FileSystem fs = FileSystem.get(new URI("hdfs://hdp-01:9000"),conf,"root");
if(fs.exists(output)){
fs.delete(output, true);
}
// 4、 : job 、
FileInputFormat.setInputPaths(job, new Path("/wordcount/input"));
FileOutputFormat.setOutputPath(job, output); // :
// 5、 : reduce task
job.setNumReduceTasks(2);
// 6、 job yarn
boolean res = job.waitForCompletion(true);
System.exit(res?0:-1);
}
}
まず、mapreduceプログラムのjobをyarnにコミットするクライアントクラス(テンプレートコード)を開発します.
l mapreduceプログラムの実行時に必要な情報(mapper、reducer、map、reduceで出力されるkvタイプ、jarパッケージが存在するパス、reduce taskの数、出力データを入力するパスなど)を説明します.
lプロジェクト全体のjarパッケージとともにyarnに情報を渡す
次に、プロジェクト全体(yarnクライアントクラス+mapreduceすべてのjarとカスタムクラス)をjarパッケージにします.
そしてjarパケットをhadoopクラスタのいずれかのマシンに転送する
最後に、jarパッケージの(YARNクライアントクラス)を実行します.
[root@hdp-04 ~]# hadoop jar wc.jar cn.oracle.hadoop.mr.wc.JobSubmitter