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: 6-work 3-javaHadoopCodehadoop01 # 进入项目所在的目录
mvn clean package -DskipTests # 项目打包成jar包
cd E: 6-work 3-javaHadoopCodehadoop01 arget # 这个目录下面有完成打包的 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