大数据实操篇 No.7 |
您所在的位置:网站首页 › azkaban文档 › 大数据实操篇 No.7 |
第1章 Azkaban简介
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。可以以计划、批量的模式对HDFS上的数据执行Hive、Sqoop等命令。 第2章 编译与安装安装之前,可以先了解一下,Azkaban的组成:Azkaban Web Server、Azkaban Executor Server、MySQL。(这里就不细讲了)
Webapp200 Hadoop100 Hadoop101 Hadoop102 Metastore √
azkaban-exec-server
√ √
azkaban-web-server
√ 笔者这里只做了exec-server的高可用,metastore部分仍然采用的是一个MySQL,后续再进行拓展,考虑将mysql部分部署成主从模式。 2.2 下载源码进行编译Azkaban官方不提供直接的安装文件,需要自己去官网(https://azkaban.github.io/)下载源码自行编译。 可以参考笔者的另外一篇文章:Azkaban源码编译。 编译完成后一共生成3份文件: azkaban-db-***.tar.gz:Azkaban元数据脚本 azkaban-exec-server-***.tar.gz:Azkaban Executor服务 azkaban-web-server-***.tar.gz:Azkaban Web服务 2.3 安装配置Metastore 2.3.1 安装MySQLAzkaban的元数据需要保存在mysql当中,所以必须要安装mysql,mysql安装步骤本文就不细讲了,略过。 2.3.2 Azkaban脚本导入编译好的3份文件中,有一份是SQL脚本,将其解压,找到create-all-sql-***.sql文件,到mysql中执行,将Azkaban的元数据建立好。 到解压的conf目录下修改azkaban.properties文件 detault.timezone.id=Asia/Shanghai executor.global.properties=/opt/module/azkaban-executor-3.86.0/conf/global.properties database.type=mysql mysql.port=3306 mysql.host=webapp200 mysql.database=azkaban mysql.user=root mysql.password=password mysql.numconnections=100修改完后分发到其他机器上。分发脚本可以参考我的另外一篇文章:大数据实操篇 No.2-Hadoop集群搭建 中的 3.2.2 编写xsync集群分发脚本 2.5 安装配置azkaban-web-server 2.5.1 配置SSL(生成密钥对和证书)注意:Azkaban-3.X之后,可以不配置SSL,web服务可不通过https进行访问,直接通过http进行访问。 可以直接在azkaban.properties中设置 jetty.use.ssl=false笔者这里安装过一次2.5.0,所以记录此版本的安装步骤 采用Keytool进行生成,Keytool是java数据证书管理工具,使用用户能够管理自己的公钥私钥对,及相关证书。 -keystore 指定密钥库的名称及位置(产生的各类信息将存在keystore文件中) -genkey(或者-genkeypair)生产密钥对 -alias 为生产的密钥对指定别名,默认是mykey -keyalg 指定密钥的算法RSA/DSA,默认是DSA 开始配置,先到web-server目录下执行如下命令 $ keytool -keystore keystore -alias zihaokey -genkey -keyalg RSA根据提示,输入自己的信息 Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: zihao What is the name of your organizational unit? [Unknown]: What is the name of your organization? [Unknown]: What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: Is CN=zihao, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct? [no]: y Enter key password for (RETURN if same as keystore password): Re-enter new password: Warning: The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12".笔者这里输入的密钥库口令和zihaokey口令为123456 注意这种方式采用的是RSA非对称加密,公钥存在证书当中,私钥存在zihaokey当中 生成后可以用命令查看密钥和证书信息 $ keytool -keystore keystore -list 2.5.2 修改配置文件到conf目录下,修改azkaban.properties文件 web.resource.dir= /opt/module/azkaban-web-3.86.0/web/ detault.timezone.id=Asia/Shanghai user.manager.xml.file=/opt/module/azkaban-web-3.86.0/conf/azkaban-users.xml database.type=mysql mysql.port=3306 mysql.host=webapp200 mysql.database=azkaban mysql.user=root mysql.password=password mysql.numconnections=100 jetty.maxThreads=25 jetty.ssl.port=8443 jetty.port=8081 ##客户端判断服务端是否可信,所用的的密钥信息 #密钥库 jetty.keystore=/opt/module/azkaban-web-3.86.0/keystore #密钥库口令 jetty.password=123456 #密钥口令 jetty.keypassword=123456 ##服务器判断客户端是否可信,所用的密钥信息 jetty.truststore=/opt/module/azkaban-web-3.86.0/keystore jetty.trustpassword=123456 #发送者邮箱 [email protected] mail.host=stmp.qq.com [email protected] #邮箱授权码 mail.password=******(密码信息根据自己的配置进行填写) 然后修改azkaban-user.xml,添加所需用户 这里用户名、密码都设置成admin 第3章 基本使用 3.1 启动/停止Executor服务 $ bin/start-exec.sh $ bin/shutdown-exec.sh进程名 AzkabanExecutorServer注意azkaban3.X之后的版本,启动后要激活executor Window浏览器访问地址激活: http://hadoop100:12321/executor?action=activate访问结果如下图:
或者 Linux系统下,在exec-server根目录下执行 curl -G " hadoop100:12321/executor?action=activate" && echo可通过查看数据库azkaban数据库executors表查看是否激活
至此,exec-server就激活成功。 3.2 启动/停止web服务器 $ bin/start-web.sh $ bin/shutdown-web.sh进程名 AzkabanWebServer打开浏览器进行验证,验证地址:https://hadoop102:8443/ 至此,web-server就部署成功。同时,Azkaban整体也就安装部署完成。 第4章 常见错误 4.1 Executor启动错误 org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server.) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Caused by: java.lang.NullPointerException at com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3286)问题原因:笔者azkaban lib目录下mysql连接驱动与安装的mysql版本不一致 解决办法:更换驱动: 将默认的mysql-connector-java-5.1.28.jar文件删除,换成mysql-connector-java-5.1.44-bin.jar 4.2 任务提交后一直为Preparing状态 原因:akaban-web下的azkaban.properties配置文件了MinimumFreeMemory。滤器会检查 executor 主机空余内存是否会大于 6G,如果不足 6G,则 web-server 不会将任务交由该主机执行 解决办法:修改akaban-web下的azkaban.properties配置文件,去掉MinimumFreeMemory(或者直接给机器添加内存) azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus修改为 azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus 4.3 字符%0D问题原因:由于windows下编写的shell脚本换行符是\r\n;而linux系统下换行符为\n 解决办法:用nodepad++替换字符;或者用dos2unix进行转换。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |