1 YARN产生背景
MapReduce1.x ==> MapReduce2.x master/slave : JobTracker/TaskTracker JobTracker:单点、压力大 仅仅只能够支持mapreduce作业 资源利用率 所有的计算框架运行在一个集群中,共享一个集群的资源,按需分配!
2 YARN关键字解释
ResourceManager-->RM:资源管理 ApplicationMaster-->NM:节点管理 NodeManager-->AM:应用管理
3 YARN架构
Client、ResourceManager、NodeManager、ApplicationMaster master/slave: RM/NM
Client: 向RM提交任务、杀死任务等 ApplicationMaster: 每个应用程序对应一个AM AM向RM申请资源用于在NM上启动对应的Task 数据切分 为每个task向RM申请资源(container) NodeManager通信 任务的监控 NodeManager: 多个 干活 向RM发送心跳信息、任务的执行情况 接收来自RM的请求来启动任务 处理来自AM的命令 ResourceManager:集群中同一时刻对外提供服务的只有1个,负责资源相关 处理来自客户端的请求:提交、杀死 启动/监控AM 监控NM 资源相关 container:任务的运行抽象 memory、cpu.... task是运行在container里面的 可以运行am、也可以运行map/reduce task
4 配置YARN
cd /usr/local/hadoop2.6/hadoop-2.6.0-cdh5.16.2/etc/hadoop cp mapred-site.xml.template mapred-site.xml vim mapred-site.xml # 编辑 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> vim yarn-site.xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
5 启动YARN
cd /usr/local/hadoop2.6/hadoop-2.6.0-cdh5.16.2/sbin bash start-yarn.sh # 确定yarn jps # 查看hadoop进程 出现这两个表示成功 /usr/local/hadoop2.6/hadoop-2.6.0-cdh5.16.2/logs 日志文件路径 ResourceManager NodeManager http://192.168.107.216:8088/ # 直接访问 能访问证明启动成功 YARN页面
6 提交自己开发的MR作业到YARN上运行的步骤
1)mvn clean package -DskipTests # 项目打包成jar包 windows/Mac/Linux ==> Maven 2)把编译出来的jar包(项目根目录/target/...jar)以及测试数据上传到服务器 scp xxxx root@ip:目录 # 复制到hadoop服务器上 3) 把数据上传到HDFS hadoop fs -put xxx hdfspath 4) 执行作业 hadoop jar xxx.jar 完整的类名(包名+类名) args..... 5) 到YARN UI(ip:8088) 上去观察作业的运行情况 6)到输出目录去查看对应的输出结果 cd E:\06-work\03-java\HadoopCode\hadoop01 # 进入项目所在的目录 mvn clean package -DskipTests # 项目打包成jar包 cd E:\06-work\03-java\HadoopCode\hadoop01\target # 这个目录下面有完成打包的 jar包 scp hadoop01-1.0.jar root@192.168.107.216:/home/hadoop/lib # jar包 上传到服务器中 scp qqwry.dat root@192.168.107.216:/home/hadoop/lib # qqwry.dat ip数据上传到服务器中 scp trackinfo_20130721.data root@192.168.107.216:/home/hadoop/lib # 日志数据上传到服务器中 hadoop fs -mkdir -p /project/input/raw # 创建hadoop目录 hadoop fs -lsr / # 查看目录是否创建成功 hadoop fs -put trackinfo_20130721.data /project/input/raw # 上传数据到目录中 hadoop fs -lsr / # 查看目录是否创建成功 vim pv.sh hadoop jar /home/hadoop/lib/hadoop01-1.0.jar com.project.mr.PVStatApp hdfs://192.168.107.216:8020/project/input/raw hdfs://192.168.107.216:8020/project/output/v1/pvsata chmod 777 pv.sh bash pv.sh