Azkaban-2.5.0-部署與常見案例

来源:https://www.cnblogs.com/zhanglianghhh/archive/2018/08/03/9415374.html
-Advertisement-
Play Games

該文章是基於 Hadoop2.7.6_01_部署 、 Hive-1.2.1_01_安裝部署 進行的 1. 前言 在一個完整的大數據處理系統中,除了hdfs+mapreduce+hive組成分析系統的核心之外,還需要數據採集、結果數據導出、任務調度等不可或缺的輔助系統,而這些輔助工具在hadoop生態 ...


 

該文章是基於 Hadoop2.7.6_01_部署Hive-1.2.1_01_安裝部署 進行的

 

1. 前言

       在一個完整的大數據處理系統中,除了hdfs+mapreduce+hive組成分析系統的核心之外,還需要數據採集、結果數據導出、任務調度等不可或缺的輔助系統,而這些輔助工具在hadoop生態體系中都有便捷的開源框架,如圖所示:

 

 

2. 工作流調度器azkaban概述

2.1. 為什麼需要工作流調度系統

  •  一個完整的數據分析系統通常都是由大量任務單元組成:

    shell腳本程式,java程式,mapreduce程式、hive腳本等

  • 各任務單元之間存在時間先後及前後依賴關係
  • 為了很好地組織起這樣的複雜執行計劃,需要一個工作流調度系統來調度執行;

 

例如,我們可能有這樣一個需求,某個業務系統每天產生20G原始數據,我們每天都要對其進行處理,處理步驟如下所示:

1、  通過Hadoop先將原始數據同步到HDFS上;

2、  藉助MapReduce計算框架對原始數據進行轉換,生成的數據以分區表的形式存儲到多張Hive表中;

3、  需要對Hive中多個表的數據進行JOIN處理,得到一個明細數據Hive大表;

4、  將明細數據進行複雜的統計分析,得到結果報表信息;

5、  需要將統計分析得到的結果數據同步到業務系統中,供業務調用使用。

 

2.2. 工作流調度實現方式

簡單的任務調度:直接使用linux的crontab來定義;

複雜的任務調度:開發調度平臺

        或使用現成的開源調度系統,比如ooize、azkaban等

 

2.3. 常見工作流調度系統

市面上目前有許多工作流調度器

在hadoop領域,常見的工作流調度器有Oozie, Azkaban,Cascading,Hamake等

 

2.4. Azkaban與Oozie對比

       對市面上最流行的兩種調度器,給出以下詳細對比,以供技術選型參考。總體來說,ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更複雜。如果可以不在意某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。

 

詳情如下:

  • 功能

       兩者均可以調度mapreduce,pig,java,腳本工作流任務

       兩者均可以定時執行工作流任務

 

  • 工作流定義

       Azkaban使用Properties文件定義工作流

       Oozie使用XML文件定義工作流

 

  • 工作流傳參

       Azkaban支持直接傳參,例如${input}

       Oozie支持參數和EL表達式,例如${fs:dirSize(myInputDir)}

 

  • 定時執行

       Azkaban的定時執行任務是基於時間的

       Oozie的定時執行任務基於時間和輸入數據

 

  • 資源管理

       Azkaban有較嚴格的許可權控制,如用戶對工作流進行讀/寫/執行等操作

       Oozie暫無嚴格的許可權控制

 

  • 工作流執行

       Azkaban有兩種運行模式,分別是solo server mode(executor server和web server部署在同一臺節點)和multi server mode(executor server和web server可以部署在不同節點)

       Oozie作為工作流伺服器運行,支持多用戶和多工作流

 

  • 工作流管理

       Azkaban支持瀏覽器以及ajax方式操作工作流

       Oozie支持命令行、HTTP REST、Java API、瀏覽器操作工作流

 

 

3. Azkaban介紹

       Azkaban是由Linkedin開源的一個批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban定義了一種KV文件格式來建立任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。

它有如下功能特點:

  Web用戶界面

  方便上傳工作流

  方便設置任務之間的關係

  調度工作流

  認證/授權(許可權的工作)

  能夠殺死並重新啟動工作流

  模塊化和可插拔的插件機制

  項目工作區

  工作流和任務的日誌記錄和審計

 

3.1. Azkaban使用MySQL存儲state的信息

AzkabanWebServer和AzkabanExecutorServer 都是能夠訪問MySQL的

 

web server使用DB的原因如下:

Project Management     項目,項目的許可權以及上傳的文件

Executing Flow State    跟蹤執行流,執行程式運行它們

Previous Flow/Jobs       搜索之前的作業和流程執行,以及訪問他們的日誌文件

Scheduler                    保持預定的工作狀態

SLA                            保持所有sla規則

 

executor server使用DB的原因如下:

Access the project         從資料庫中檢索項目文件

Executing Flows/Jobs   檢索和更新 流和正在執行的數據

Logs                            將輸出日誌存儲到作業中並流入到db中

Interflow dependency    如果流在不同的執行器上運行,則它將從DB中獲取狀態

 

 

4. Azkaban安裝部署

       將安裝文件上傳到集群,最好上傳到安裝 hive、sqoop的機器上,方便命令的執行

 

準備工作

Azkaban Web伺服器

azkaban-web-server-2.5.0.tar.gz

Azkaban執行伺服器 

azkaban-executor-server-2.5.0.tar.gz

 

MySQL

azkaban-2.5.0只支持 mysql,需安裝mysql伺服器,本文檔中預設已安裝好mysql伺服器,下文中會建立 azkaban用戶,密碼 azkaban.

 

 1 # 相關信息
 2 [yun@mini01 azkaban]$ pwd
 3 /app/software/azkaban
 4 [yun@mini01 azkaban]$ ll
 5 total 22612
 6 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
 7 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
 8 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz
 9 # 解壓縮包
10 [yun@mini01 azkaban]$ tar xf azkaban-executor-server-2.5.0.tar.gz 
11 [yun@mini01 azkaban]$ tar xf azkaban-web-server-2.5.0.tar.gz
12 [yun@mini01 azkaban]$ tar xf azkaban-sql-script-2.5.0.tar.gz
13 [yun@mini01 azkaban]$ ll
14 total 22616
15 drwxrwxr-x 2 yun yun     4096 Jul 29 17:02 azkaban-2.5.0
16 drwxrwxr-x 7 yun yun       92 Jul 29 17:02 azkaban-executor-2.5.0
17 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
18 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
19 drwxrwxr-x 8 yun yun      103 Jul 29 17:02 azkaban-web-2.5.0
20 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz

 

4.1. MySQL部署

建庫並授權

 1 # 在mini03上操作
 2 # 建庫
 3 MariaDB [(none)]> CREATE DATABASE azkaban DEFAULT CHARACTER SET utf8 ;
 4 Query OK, 1 row affected (0.00 sec)
 5 
 6 MariaDB [(none)]> show create database azkaban;
 7 +----------+------------------------------------------------------------------+
 8 | Database | Create Database                                                  |
 9 +----------+------------------------------------------------------------------+
10 | azkaban  | CREATE DATABASE `azkaban` /*!40100 DEFAULT CHARACTER SET utf8 */ |
11 +----------+------------------------------------------------------------------+
12 1 row in set (0.00 sec)
13 
14 MariaDB [(none)]> show databases;
15 +--------------------+
16 | Database           |
17 +--------------------+
18 | information_schema |
19 | azkaban            |
20 | hive               |
21 | mysql              |
22 | performance_schema |
23 | test               |
24 | zhang              |
25 +--------------------+
26 7 rows in set (0.00 sec)
27 
28 # 授權 
29 MariaDB [(none)]> grant all on azkaban.* to azkaban@'%' identified by 'azkaban'; 
30 Query OK, 0 rows affected (0.00 sec)
31 
32 MariaDB [(none)]> 
33 MariaDB [(none)]> flush privileges;
34 Query OK, 0 rows affected (0.00 sec)
35 
36 MariaDB [(none)]> select user,host from mysql.user;
37 +---------+-----------+
38 | user    | host      |
39 +---------+-----------+
40 | azkaban | %         |
41 | hive    | %         |
42 | root    | %         |
43 | root    | 127.0.0.1 |
44 | root    | ::1       |
45 |         | localhost |
46 | root    | localhost |
47 |         | mini03    |
48 | hive    | mini03    |
49 | root    | mini03    |
50 +---------+-----------+
51 10 rows in set (0.00 sec)

 

導入數據

 1 # 在有azkaban的SQL語句機器上操作
 2 [yun@mini01 azkaban-2.5.0]$ pwd
 3 /app/software/azkaban/azkaban-2.5.0
 4 [yun@mini01 azkaban-2.5.0]$ ll
 5 total 88
 6 -rwxr-xr-x 1 yun yun  129 Apr 22  2014 create.active_executing_flows.sql
 7 -rwxr-xr-x 1 yun yun  216 Apr 22  2014 create.active_sla.sql
 8 -rwxr-xr-x 1 yun yun 4694 Apr 22  2014 create-all-sql-2.5.0.sql  # 包含所有庫信息
 9 -rwxr-xr-x 1 yun yun  610 Apr 22  2014 create.execution_flows.sql
10 -rwxr-xr-x 1 yun yun  519 Apr 22  2014 create.execution_jobs.sql
11 -rwxr-xr-x 1 yun yun  358 Apr 22  2014 create.execution_logs.sql
12 -rwxr-xr-x 1 yun yun  224 Apr 22  2014 create.project_events.sql
13 -rwxr-xr-x 1 yun yun  227 Apr 22  2014 create.project_files.sql
14 -rwxr-xr-x 1 yun yun  280 Apr 22  2014 create.project_flows.sql
15 -rwxr-xr-x 1 yun yun  285 Apr 22  2014 create.project_permissions.sql
16 -rwxr-xr-x 1 yun yun  294 Apr 22  2014 create.project_properties.sql
17 -rwxr-xr-x 1 yun yun  380 Apr 22  2014 create.projects.sql
18 -rwxr-xr-x 1 yun yun  325 Apr 22  2014 create.project_versions.sql
19 -rwxr-xr-x 1 yun yun  155 Apr 22  2014 create.properties.sql
20 -rwxr-xr-x 1 yun yun  498 Apr 22  2014 create.schedules.sql
21 -rwxr-xr-x 1 yun yun  189 Apr 22  2014 create.triggers.sql
22 -rwxr-xr-x 1 yun yun   22 Apr 22  2014 database.properties
23 -rwxr-xr-x 1 yun yun  671 Apr 22  2014 update-all-sql-2.1.sql
24 -rwxr-xr-x 1 yun yun  156 Apr 22  2014 update-all-sql-2.2.sql
25 -rwxr-xr-x 1 yun yun  395 Apr 22  2014 update.execution_logs.2.1.sql
26 -rwxr-xr-x 1 yun yun   59 Apr 22  2014 update.project_properties.2.1.sql
27 [yun@mini01 azkaban-2.5.0]$ ll /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql  # 要導入的SQL文件 
28 -rwxr-xr-x 1 yun yun 4694 Apr 22  2014 /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
29 [yun@mini01 azkaban-2.5.0]$ 
30 [yun@mini01 azkaban-2.5.0]$ mysql -hmini03 -uazkaban -pazkaban
31 Welcome to the MariaDB monitor.  Commands end with ; or \g.
32 Your MariaDB connection id is 4
33 Server version: 5.5.56-MariaDB MariaDB Server
34 
35 Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
36 
37 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
38 
39 MariaDB [(none)]> use azkaban;  # 使用庫
40 Database changed
41 MariaDB [azkaban]> source /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
42 ………………
43 MariaDB [azkaban]> show tables;  
44 +------------------------+
45 | Tables_in_azkaban      |
46 +------------------------+
47 | active_executing_flows |
48 | active_sla             |
49 | execution_flows        |
50 | execution_jobs         |
51 | execution_logs         |
52 | project_events         |
53 | project_files          |
54 | project_flows          |
55 | project_permissions    |
56 | project_properties     |
57 | project_versions       |
58 | projects               |
59 | properties             |
60 | schedules              |
61 | triggers               |
62 +------------------------+
63 15 rows in set (0.00 sec)

 

4.2. azkaban執行服器和web伺服器部署

 1 [yun@mini01 azkaban]$ pwd
 2 /app/software/azkaban
 3 [yun@mini01 azkaban]$ ll
 4 total 22616
 5 drwxrwxr-x 2 yun yun     4096 Jul 29 17:02 azkaban-2.5.0
 6 drwxrwxr-x 7 yun yun       92 Jul 29 17:02 azkaban-executor-2.5.0
 7 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
 8 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
 9 drwxrwxr-x 8 yun yun      103 Jul 29 17:02 azkaban-web-2.5.0
10 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz
11 # 先創建/app/azkaban/ 目錄
12 [yun@mini01 azkaban]$ cp -a azkaban-executor-2.5.0 /app/azkaban/executor-2.5.0
13 [yun@mini01 azkaban]$ cp -a azkaban-web-2.5.0 /app/azkaban/web-server-2.5.0
14 [yun@mini01 azkaban]$ cd /app/azkaban/
15 [yun@mini01 azkaban]$ ll
16 total 0
17 drwxrwxr-x 7 yun yun  92 Jul 29 17:02 executor-2.5.0
18 drwxrwxr-x 8 yun yun 103 Jul 29 17:02 web-server-2.5.0

 

4.3. 為azkaban創建SSL配置

 1 [yun@mini01 azkaban]$ pwd
 2 /app/azkaban
 3 [yun@mini01 azkaban]$ ll
 4 total 4
 5 drwxrwxr-x 7 yun yun   92 Jul 29 17:02 executor-2.5.0
 6 drwxrwxr-x 8 yun yun  103 Jul 29 17:02 web-server-2.5.0 
 7 [yun@mini01 azkaban]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA  
 8 Enter keystore password:     # 輸入123456
 9 Re-enter new password:       # 輸入123456
10 What is your first and last name?
11   [Unknown]:  
12 What is the name of your organizational unit?
13   [Unknown]:  
14 What is the name of your organization?
15   [Unknown]:  
16 What is the name of your City or Locality?
17   [Unknown]:  
18 What is the name of your State or Province?
19   [Unknown]:  
20 What is the two-letter country code for this unit?
21   [Unknown]:  CN
22 Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
23   [no]:  yes
24 
25 Enter key password for <jetty>
26     (RETURN if same as keystore password):  
27 # 查看生成的keystore 
28 [yun@mini01 azkaban]$ ll
29 total 4
30 drwxrwxr-x 7 yun yun   92 Jul 29 17:02 executor-2.5.0
31 -rw-rw-r-- 1 yun yun 2233 Jul 29 17:46 keystore
32 drwxrwxr-x 8 yun yun  103 Jul 29 17:02 web-server-2.5.0
33 [yun@mini01 azkaban]$ cp -a keystore  web-server-2.5.0/  # 將keystore拷貝到azkaban的web中
34 [yun@mini01 azkaban]$ ll web-server-2.5.0/
35 total 12
36 -rw-r--r-- 1 yun yun  105 Apr 22  2014 azkaban.version
37 drwxr-xr-x 2 yun yun  112 Apr 22  2014 bin
38 drwxr-xr-x 2 yun yun   57 Jul 29 17:02 conf
39 drwxr-xr-x 2 yun yun    6 Apr 22  2014 extlib
40 -rw-rw-r-- 1 yun yun 2233 Jul 29 17:46 keystore
41 drwxr-xr-x 2 yun yun 4096 Jul 29 17:02 lib
42 drwxr-xr-x 2 yun yun    6 Apr 22  2014 plugins
43 drwxr-xr-x 6 yun yun   73 Jul 29 17:02 web

 

4.4. 配置文件

註:先配置好伺服器節點上的時區

1、先生成時區配置文件Asia/Shanghai,用互動式命令 tzselect 即可

2、拷貝該時區文件,覆蓋系統本地時區配置

1 # 也可以是軟連接
2 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  

 

4.4.1. web伺服器配置

 1 [yun@mini01 conf]$ pwd
 2 /app/azkaban/web-server-2.5.0/conf
 3 [yun@mini01 conf]$ ll
 4 total 8
 5 -rw-r--r-- 1 yun yun 1007 Jul 29 19:29 azkaban.properties
 6 -rw-r--r-- 1 yun yun  266 Apr 22  2014 azkaban-users.xml
 7 #### azkaban.properties 配置
 8 [yun@mini01 conf]$ vim azkaban.properties 
 9 #Azkaban Personalization Settings
10 azkaban.name=Test  #伺服器UI名稱,用於伺服器上方顯示的名字
11 azkaban.label=My Local Azkaban  #描述
12 azkaban.color=#FF3601   #UI顏色
13 azkaban.default.servlet.path=/index
14 web.resource.dir=web/   #預設根web目錄
15 default.timezone.id=Asia/Shanghai  #時區
16 
17 #Azkaban UserManager class
18 user.manager.class=azkaban.user.XmlUserManager  #用戶許可權管理預設類
19 user.manager.xml.file=conf/azkaban-users.xml    #用戶配置,具體配置參加下文
20 
21 #Loader for projects
22 executor.global.properties=conf/global.properties  # global配置文件所在位置
23 azkaban.project.dir=projects
24 
25 database.type=mysql
26 mysql.port=3306
27 mysql.host=mini03
28 mysql.database=azkaban
29 mysql.user=azkaban
30 mysql.password=azkaban
31 mysql.numconnections=100   #最大連接數
32 
33 # Velocity dev mode
34 velocity.dev.mode=false
35 
36 # Azkaban Jetty server properties.
37 jetty.maxThreads=25            #最大線程數
38 jetty.ssl.port=8443            #Jetty SSL埠
39 jetty.port=8081                #Jetty埠
40 jetty.keystore=keystore        #SSL文件名
41 jetty.password=123456          #SSL文件密碼
42 jetty.keypassword=123456       #Jetty主密碼 與 keystore文件相同
43 jetty.truststore=keystore      #SSL文件名
44 jetty.trustpassword=123456     # SSL文件密碼
45 
46 # Azkaban Executor settings
47 executor.port=12321            #執行伺服器埠
48 
49 # mail settings
50 mail.sender=                   #發送郵箱
51 mail.host=                     #發送郵箱smtp地址
52 job.failure.email=             #任務失敗時發送郵件的地址
53 job.success.email=             #任務成功時發送郵件的地址
54 
55 lockdown.create.projects=false
56 
57 cache.directory=cache          #緩存目錄
58 
59 ###### azkaban-users.xml 配置
60 [yun@mini01 conf]$ vim azkaban-users.xml 
61 <azkaban-users>
62         <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
63         <user username="metrics" password="metrics" roles="metrics"/>
64         <user username="admin" password="admin" roles="admin,metrics" />
65 
66         <role name="admin" permissions="ADMIN" />
67         <role name="metrics" permissions="METRICS"/>
68 </azkaban-users>

 

4.4.2. executor執行伺服器配置

 1 [yun@mini01 conf]$ pwd
 2 /app/azkaban/executor-2.5.0/conf
 3 [yun@mini01 conf]$ vim azkaban.properties 
 4 #Azkaban
 5 default.timezone.id=Asia/Shanghai
 6 
 7 # Azkaban JobTypes Plugins
 8 azkaban.jobtype.plugin.dir=plugins/jobtypes   #jobtype 插件所在位置
 9 
10 #Loader for projects
11 executor.global.properties=conf/global.properties
12 azkaban.project.dir=projects
13 
14 database.type=mysql
15 mysql.port=3306
16 mysql.host=mini03
17 mysql.database=azkaban
18 mysql.user=azkaban
19 mysql.password=azkaban
20 mysql.numconnections=100      #最大連接數
21 
22 # Azkaban Executor settings
23 executor.maxThreads=50        #最大線程數
24 executor.port=12321           #埠號(如修改,請與web服務中一致)
25 executor.flow.threads=30      #線程數

 

4.5. 啟動azkaban

       先執行executor,再執行web,避免Web Server會因為找不到執行器啟動失敗。

 

執行伺服器

1 [yun@mini01 executor-2.5.0]$ pwd
2 /app/azkaban/executor-2.5.0
3 [yun@mini01 executor-2.5.0]$ ./bin/azkaban-executor-start.sh  
4 # 或者 nohup ./bin/azkaban-executor-start.sh > azkaban-exec_$(date +%Y%m%d%H%M%S).log & 
5 # 方便查看日誌
6 ………………

 

web伺服器

1 [yun@mini01 web-server-2.5.0]$ pwd
2 /app/azkaban/web-server-2.5.0
3 [yun@mini01 web-server-2.5.0]$ ./bin/azkaban-web-start.sh  # 日誌會自己記錄 
4 ………………

 

查看java進程

1 [yun@mini01 executor-2.5.0]$ jps 
2 4083 AzkabanWebServer
3 3988 AzkabanExecutorServer
4 4171 Jps

 

4.6. 瀏覽器訪問

1 https://mini01:8443/ 

 

       使用admin登錄之後

 

 

5. Azkaban實戰

       Azkaba內置的任務類型支持command、java

 

5.1. Command類型單一job示例

創建job描述文件

在Windows創建文件 command.job,內容如下

 

command.job

1 #command.job
2 type=command
3 # command=sh hello.sh
4 command=echo 'hello'

 

hello.sh

1 #!/bin/bash
2 echo 'hello World!' > /tmp/azkaban.info

 

將job資源文件打包成zip文件

zip command.job

 

創建project、上傳包並執行

1、通過azkaban的web管理平臺創建project並上傳job壓縮包

首先創建project

 

2、上傳zip包

 

3、啟動執行該job

 

5.2. Command類型多job工作流flow

1、創建有依賴關係的多個job描述

第一個job:foo.job

1 # foo.job
2 type=command
3 command=echo foo

 

第二個job:bar.job依賴foo.job

1 # bar.job
2 type=command
3 dependencies=foo
4 command=echo bar

 

2、將所有job資源文件打到一個zip包中

 

3、在azkaban的web管理界面創建工程並上傳zip包

4、啟動工作流flow

 

5.3. HDFS操作任務

1、創建job描述文件

 

fs_01.job

1 # fs.job
2 type=command
3 command=/app/hadoop/bin/hadoop fs -mkdir -p /azkaban/test03_new

 

fs_02.job

1 # fs.job
2 type=command
3 dependencies=fs_01
4 command=/app/hadoop/bin/hadoop fs -put /app/software/apache-flume-1.8.0-bin.tar.gz /azkaban/test03_new

 

2、將job資源文件打包成zip文件

 

3、通過azkaban的web管理平臺創建project並上傳job壓縮包

4、啟動執行該job

 

5.4. MAPREDUCE任務

Mr任務依然可以使用command的job類型來執行

1、創建job描述文件,及mr程式jar包(示例中直接使用hadoop自帶的example jar)

 

mrwc_01.job

1 # mrwc.job
2 type=command
3 command=/app/hadoop/bin/hadoop fs -mkdir -p /azkaban/wordcount/input

 

mrwc_02.job

1 # mrwc.job
2 type=command
3 dependencies=mrwc_01
4 command=/app/hadoop/bin/hadoop fs -put test.info zhang.info /azkaban/wordcount/input

 

mrwc_03.job

1 # mrwc.job
2 type=command
3 dependencies=mrwc_02
4 command=/app/hadoop/bin/hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /azkaban/wordcount/input /azkaban/wordcount/output

 

test.info

1 111
2 222
3 333
4 444
5 555
6 333
7 222
8 222
9 222

 

zhang.info

1 zxcvbnm
2 asdfghjkl
3 	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天看了一個關於Linux系統安全的視頻教程,這個教程有很多的知識點,我會分幾篇博文將我的筆記分享出來。 首先是關於Linux文件系統類型的一些知識,Linux有四種常見的文件系統類型(網上大多數是3種,但我覺得鏈接文件類型應該也算作一種)。 1.普通文件(Ordinary File) 普通文件分為 ...
  • mysql登陸不上或者密碼忘記可以嘗試一下無密碼登陸 以下一波神操作!! 首先關閉資料庫服務(資料庫在Centos7版本以上或者Redhat版本上被改名為mariadb) systemctl stop mariadb 跳過密碼驗證(& 將該進程放到後臺運行)mysqld_safe --skip-gr ...
  • 訪問網站時出現如下錯誤,如下圖: 檢查php fastcgi進程數,如下圖: 輸出0則表示fastcgi進程數夠大,修改scgi_params文件,如下圖: 然後重啟php-fpm和nginx,重新訪問即可正常訪問。 ...
  • 這期就安裝與Ubantu、Linux Mint差不多的系統,但是這個Debian系統的話,它安裝時卻有些不一樣,什麼不一樣,我們接下來看看吧! 安裝Debian系統 系統下載 Debian 9.5下載地址:https://www.debian.org/ PE裝系統(簡單文字敘述) 1.首先分區時記得 ...
  • windows 操作系統可以使用 win+R 運行一些命令執行任務,好處是:高效、快速、準確。 啟動程式 將程式 chrome 寫入以下註冊表中, 運行 chrome 就可以快速啟動 chrome 了。 定位文件位置 1、直接運行 目錄地址 就可以定位到目錄: 2、運行 explorer.exe / ...
  • 小課堂之hbase命令的簡單操作 1、創建一張表 create 表名,列族名 create 't0','cf01' --把單引號去掉? undefined local variable or method `t02' for 在hbase shell當中使用字元串時,需要註意,要加上引號 是否可以使 ...
  • 占座 ...
  • MySQL安裝完成以後,基本操作有:1.創建資料庫 2.刪除資料庫 3.修改資料庫 1.創建資料庫 在MySQL中,創建資料庫的命令為 create database 資料庫名; 其中可在資料庫名前添加 if not exists,表示不重覆創建同名資料庫。 2.刪除資料庫 在已有的資料庫中可選擇一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...