本文主要是介绍Azkaban官网文档1-概述-Overvie,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Azkaban是在LinkedIn上实现的,用来解决Hadoop作业依赖的问题。我们的工作需要按顺序运行,从ETL工作到数据分析产品。
Azkaban最初是一个单一的服务器解决方案,随着多年来Hadoop用户数量的增加,它已经发展成为一个更健壮的解决方案。
Azkaban由三个关键部分组成:
- 关系型数据库(MySQL)
- AzkabanWebServer
- AzkabanExecutorServer
Relational Database (MySQL)
Azkaban使用MySQL来存储它的大部分状态。AzkabanWebServer和AzkabanExecutorServer都访问数据库。
AzkabanWebServer 是如何访问数据库的?
web服务器使用数据库的原因如下:
- 项目管理——项目、项目权限、上传文件。
- 执行工作流状态——跟踪执行工作流以及哪个执行器正在运行它们。
- 以前的工作流/作业——搜索以前执行的作业和工作流,并访问它们的日志文件。
- 调度程序——保持调度作业的状态。
- SLA——保持所有SLA规则
AzkabanExecutorServer 用数据库来干啥?
- 访问项目——从数据库中检索项目文件。
- 执行工作流/作业——检索和更新正在执行的工作流的数据
- 日志——将作业和工作流的输出日志存储到数据库中。
- 互流依赖——如果一个工作流在不同的执行程序上运行,它将从数据库获取状态。
选择MySQL的原因是它是一个广泛使用的数据库。我们希望实现与其他数据库的兼容性,尽管在历史上运行作业的搜索需求受益于关系数据存储。
AzkabanWebServer
AzkabanWebServer是阿兹卡班的主要管理器。它处理项目管理、身份验证、调度器和执行监视。它还充当web用户界面。
使用Azkaban很容易,Azkaban使用*.job键值属性文件定义工作流中的各个任务,_dependencies_属性定义作业的依赖链。这些作业文件和相关代码可以归档到一个*.zip文件中,并通过Azkaban UI或curl通过web服务器上传。
AzkabanExecutorServer
以前的Azkaban版本同时具有AzkabanWebServer和AzkabanExecutorServer的功能。后来,执行程序被分离到它自己的服务器中。拆分这些服务有几个原因:我们很快就可以扩展执行的数量,如果有一个失败,我们就可以使用操作执行器。同时,我们能够在对用户影响最小的情况下升级Azkaban。随着Azkaban的使用增加,我们发现升级Azkaban变得越来越困难,因为一天中的任何时候都变成了“高峰”。
Getting Started
在3.0版本中,我们提供了三种模式:独立的“单服务器”模式、较重的双服务器模式和分布式多执行器模式。下面将介绍这两种模式之间的区别。
在solo服务器模式下,DB嵌入H2, web服务器和executor服务器在同一个进程中运行。如果你只是想尝试一下,这应该是有用的。它也可以在小规模的用例中使用。
Download and Install Solo Server Package
Install Azkaban Plugins
两种服务器模式适用于更复杂的生产环境。它的DB应该由主-从设置的MySQL实例来支持。web服务器和executor服务器应该运行在不同的进程中,因此升级和维护不应该影响用户。
- Set up the database
- Download and install the Web Server
- Download and install the Executor Server
- Install Azkaban Plugins
多执行器模式适用于最正式的生产环境。它的DB应该由主-从设置的MySQL实例来支持。理想情况下,web服务器和执行服务器应该运行在不同的主机上,这样升级和维护就不会影响用户。这种多主机设置为azkaban带来了健壮和可伸缩的方面。
- Set up the database
- Download and install the Web Server
- Configure database to use multiple executors
- Download and install the Executor Server for each executor configured in database
- Install Azkaban Plugins
下面是如何设置azkaban的说明。
Azkaban构建使用Gradle(使用gradlew (Gradle包装器)自动下载),需要Java 8或更高版本。
下面的命令运行在*nix平台上,比如Linux, OS X。
# Build Azkaban./gradlew build# Clean the build./gradlew clean# Build and install distributions./gradlew installDist# Run tests./gradlew test# Build without running tests./gradlew build -x test
这些都是标准的gradle指令。请查看Gradle文档获取更多信息。
Gradle在项目目录中创建.tar.gz文件。如。
./azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz.
Untar using
tar -xvzf path/to/azkaban-*.tar.gz.
Getting started with the Solo Server
solo Server是azkaban的一个独立实例,也是最简单的入门工具。solo服务器有以下优点。
- 易于安装-不需要MySQL实例。它将H2打包为主要的持久性存储。
- 易于启动——web服务器和executor服务器运行在同一个进程中。
- 全功能-它包所有阿兹卡班功能。你可以用正常的方式使用它,并为它安装插件。
安装方法:
- Clone the repo: run
git clone https://github.com/azkaban/azkaban.git
- Build Azkaban and create an installation: run
cd azkaban; ./gradlew build installDist
- Start the server: run
cd azkaban-solo-server/build/install/azkaban-solo-server; bin/azkaban-solo-start.sh
- Stop server: run
bin/azkaban-solo-shutdown.sh
from within the azkaban-solo-server installation directory
solo-server安装应该包含以下目录。
Folder | Description |
---|---|
bin | The scripts to start/stop Azkaban jetty server |
conf | The configuration files for Azkaban solo server |
lib | The jar dependencies for Azkaban |
extlib | Additional jars that are added to extlib will be added to Azkaban's classpath |
plugins | the directory where plugins can be installed |
web | The web (css, javascript, image) files for Azkaban web server. |
在conf目录中,应该有三个文件:
azkaban.private.properties - 运行时参数
azkaban.properties - 使用运行时参数
global.properties - 作为共享属性传递给每个工作流和作业的全局静态属性。
azkaban-users.xml - 用于为身份验证添加用户和角色。如果XmLUserManager没有设置为使用该文件,则不使用该文件。
azkaban.properties是最主要的配置文件
Getting KeyStore for SSL (Optional)
阿兹卡班solo服务器默认不使用SSL。但是您可以在独立的web服务器上以相同的方式进行设置。这里是:
Azkaban web服务器可以使用SSL套接字连接器,这意味着密钥库必须是可用的。您可以按照这个链接提供的步骤进行调用([http://docs.codehaus.org/display/JETTY/How+to+configure+SSL](http://docs.codehaus.org/display/JETTY/How+to+configure+SSL)) 创建一个。创建密钥存储库文件后,必须向azkaban提供其位置和密码。azkaban.properties,应重写下列属性。
jetty.keystore=keystore
jetty.password=password
jetty.keypassword=password
jetty.truststore=keystore
jetty.trustpassword=password
下面就不写了,大家自己看吧:
https://azkaban.readthedocs.io/en/latest/index.html#
这篇关于Azkaban官网文档1-概述-Overvie的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!