开发者学堂课程【Azkaban 大数据调度系统课程精讲:Azkaban--使用实战--hadoop 调度(hdfs、mapreduce)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/721/detail/12881
Azkaban--使用实战--hadoop 调度(hdfs、mapreduce)
内容介绍:
一、HDFS 任务调度
二、MAPREDUCE 任务调度
一、HDFS 任务调度:
下面学习关于 Azkaban 中 hadoop 的相关调度,在 hadoop 调度中分为两个方面:HDFS 任务调度、MAPREDUCE 任务调度。
接下来演示用 Azkaban 调度配置操作的具体步骤:
第一种是 HDFS 任务调度,在进行 Azkaban 调度配置操作之前,如果需要手动执行文件系统操作,就可以打开 node-2命令行,输入命令 hadoop fs -ls(查看 ls),把 hadoop fs -ls 转化为 Azkaban 调度 HDFS 任务执行。hadoop fs -ls 这个命令是 shell 命令 ,hadoop 是在 hadoop 软件某个的路径下,可以输入 which hadoop 进行相关查找。
发现 hadoop fs -ls 的具体代码是/export/serve/ hadoop-2.7.5/bin/hadoop。
1、打开参考资料——Azkadan——job 配置模板
2、创建 job 文件
接下来打开 job 配置模板——hafs 文件夹,文件夹下有一个 job 文件 fs.job 。
在 fs.job 文件中
type=command
//类型是 command命令
command=sh hdfs.sh//command
命令是用来输出一个脚本 hdfs.sh,具体的逻辑在这个脚本当中
接下来打开 hdfs.sh 这个脚本,脚本内容如下:
#!/bin/bash //定义了一个解释器
/export/serves/hadoop-2.7.5/bin/hadoop fs-mkdir/azaz666
//全路径,在此路径基础之上,可以执行后面的相关操作,整个核心参数:hadoop fs-mkdir/azaz666。//创建一个文件夹名为 azaz666(提示:在脚本直接敲好全路径,是识别不到的,因为 shell 脚本没有加载到环境变量里)
确保 Azkaban 能否执行,且/export/serves/hadoop-2.7.5这个文件路径与当前与 node-2系统命令行的路径是否一致。
3、将所有 job 资源文件打包成 zip 文件
选中 fs.job 、hdfs.sh 这两个文件右键选择加到压缩档选项,之后选择 zip 格式。创建好这个压缩包,说明工程的资源和配置都准备好了。
4、通过 Azkaban 的 web 管理平台创建 project 并上传 job 压缩包
打开浏览器 http://node-2:8443/index.进入到 Azkaban 新建一个 web 工程。
(1) :首先创建 project
点击 Azkaban 界面的 Create Project,创建这个工程
(2):上传 zip 包
当前这是一个空工程,点击 Upload 进行执行操作,选择之前的压缩包 hdfs.sh.zip 上传到工程里,这样就完成了 zip 上传。
之后选择右上角的立即执行按钮 Schedule/Execute.Flow,看一下效果,显示 RUNNING,说明正在执行,等待一段时间,显示 SUCCEEDED,说明创建成功,2秒就完成了创建,如果出错,会报出 FAILED,出现红色标识的内容。
当点击 job 的 Details ,查看 job 执行结果的相关信息。执行完成之后,打开 Browse Directory,点击 Go!进行刷新,发现创建了一个文件夹名叫 azaz666,这样就完成了利用 Azkaban 针对 HDFS 任务调度的相关操作。
二、MAPREDUCE 任务调度:
下面学习 MAPREDUCE 任务调度。
接下来演示用 Azkaban 调度配置操作的具体步骤:
第二种是 mr 程序的提交,如果手动执行文件系统操作进行码程序,就是把 jar 包上传到机器上,用 hadoop jar 进行相关执行。转化为 Azkaban 调度,去配置相关软件的执行路径,因为 hadoop jar 与 hadoop fs 是同一路径下的 shell 命令,配置/home/hadoop/ apps/hadoop-2.6.1/bin/hadoop 就可以实现执行 Azkaban 调度。
接下来进行具体操作:
在 hadoop 安装包有一个官方案例:mr 程序
这里面有一个 hadoop -mapreduce-examples- 2.7.5.jar 的 jra 包,这里面可以实现两种 mr 程序:
1、计算圆周率Π
2、进行统计
如果想要进行计算圆周率Π,就输入 hadoop jar hadoop -mapreduce-examples- 2.7.5.jar 2 4,提供 jar 的名字,给予两个参数进行评估。
运行之后出现了参数报错:
An Aggregate based map/reduce program that counts the words in the input files,这个程序根据输入的参数hadoop jar hadoop -mapreduce-examples- 2.7.5.jar 2 4来评估执行相关的程序,执行的计算圆周率Π,修改输入:hadoop jar hadoop -mapreduce-examples- 2.7.5.jar pi 2 4,然后执行成功。
接下来转化为 Azkaban 调度执行:
1、打开参考资料——Azkadan——job 配置模板
2、创建 job 描述文件
接下来打开 job 配置模板——mapreduce 文件夹,执行 mr 程序一定要有个 jar 包,接下来编写一个mapreduce_wordcount.job 文件,右键打开。
在 mapreduce_wordcount.job 文件中
# mapreduce_wordcount.job
type=command
//类型是 command 命令
command=/root/hadoop/apps/hadoop/bin/hadoop jar
hadoop -mapreduce-examples- 2.6.1.jar pi 4 4
//command 命令是用来输出一个路径
接下来打开 nide-2这个服务器,刚才执行的程序已经结束,输入 which hadoop。
出现的路径:/export/serve/ hadoop-2.7.5/bin/hadoop,复制到 command。
即 command=/export/serve/ hadoop-2.7.5/bin/hadoop jar
hadoop -mapreduce-examples- 2.7.5.jar pi 4 4
//command 执行下面这个命令,注意 jar 的名字要保持一致,不一致,就进行替换。
上面是根据圆周率为例,下面以 wordcount 为例:
command=/export/serve/ hadoop-2.7.5/bin/hadoop jar
hadoop -mapreduce-examples- 2.7.5. wordcount/wc/input
/wc/onput
这样就把 wordcount 的 mr 程序配置好了,去提交一个 mr 程序,做一个单词统计,配置好以后就把 jar 包和 job 配置文件一起打包压缩。
3、将所有 job 资源文件打包成 zip 文件
配置好以后就选中 jar 包和 job 配置文件加到压缩档选项,之后选择 zip 格式。创建好这个压缩包。
4、通过 Azkaban 的 web 管理平台创建 project 并上传 job 压缩包
打开浏览器 http://node-2:8443/index.进入到 Azkaban 新建一个 web 工程。
(1):首先创建 project
点击 Azkaban 界面的 Create Project,创建这个工程
(2):上传 zip 包
当前这是一个空工程,点击 Upload 进行执行操作,选择之前的压缩包 mapreduce.zip 上传到工程里,这样就完成了 zip 上传。
现在不能立即执行,因为程序需要一个输入输出路径,处理一下输入的待处理的数据,打开 node-2服务器,输入# hadoop fs-mkdir -p/wc/input,创建一下路径,接下来准备一个文件:# vim input.txt。
当简单写入 :
Hadoop hello allen
Spark hadoop hive
Hadop hadoop
把这个文件放到这个路径下: hadoop fs -put input.txt/wc/input
上传之后,确保数据是否在/wc/input 里,确认好之后,就开始提交执行。
看是否能执行 mr 程序,返回 Azkaban 里的 mapreduce_wordcount,如果不想配置 Schedule 定时,可以点Execute.Flow 立即执行,点击 Execute.Flow,mr 程序显示 RUNNING,说明正在执行,可以使用 node-18088刷新查看 mr 程序执行实时状况,与 Azkaban 同步 mr 程序执行实时状况,使用 node-18088看到里面有 word count mr程序,显示 RUNNINIG,等待一段时间,显示 SUCCEEDED,同时 Azkaban 显示 RUNNINIG,说明程序执行成功,同时可以使用 node-18088查看日志,以及也可以用 Azkaban 查看日志情况,同时也可以点击 Azkaban 上的 job List后面的 Details,查看 job 执行结果的相关信息以及是否出错,如果出错会有具体标识。
接下来进行验证:
打开/wc 路径下,发现 output 并点击,里面的_SUCCESS 代表成功执行,数据应该在 part-r-0000,点击 Download 进行验证,打击右键打开 part-r-0000 文件,发现完成单词统计,这样就完成了 mr 程序的提交。
总结:
针对 hadoop 任务,无论是 HDFS 任务调度还是 MAPREDUCE 任务调度,核心就是配置 command 命令,之前在shell 如何执行的,就如何配置在脚本当中。