1.HUE

账号密码 都是hue
image.png

2.ooize

3.1 ooize的基本介绍

Oozie 是一个开源的工作流和协作服务引擎,基于 Apache Hadoop 的数据处理任务.
什么是工作流? 业务过程的部分或整体在计算机应用环境下的自动化
工作流具有特点:

  1. 整个流程可以被分为多个节点
  2. 各个节点存在依赖关系(前序没有干, 后续就无法执行)
  3. 此流程需要周而复始不断的干

总结: 如果以后发现有个任务满足了以上三个特征, 那么就可以尝试使用工作流来解决

如何选择azkaban和ooize

  1. 如果从单独使用角度来说azkaban更好。 通过配置类似于properties文件来定义工作流,只要时shell可以工作都能工作,本质上azkaban是一款shell调度器
  2. 如果从生态角度来说(综合使用hue来说)ooize更好,都是开源的并且整合之后使用也较为方便点点就行

    3.sqoop

    sqoop是一款负责将RDBMS和hadoop之间数据迁移的工具

    3.1常用命令

    ```

    1查看mysql中所有的数据库

    sqoop list-databases —connect jdbc:mysql://hadoop01:3306 —username root —password 123456

    2查看mysql中某个库下所有的表

    sqoop list-tables —connect jdbc:mysql://hadoop01:3306/scm —username root —password 123456 从mysql中将数据导入到HDFS(全量导入)
  1. <a name="tWjXv"></a>
  2. ### 3.2mysql导入hdfs

全量导入 sqoop import \ —connect jdbc:mysql://hadoop01:3306/test \ —username root —password 123456 \ —table emp \ —delete-target-dir \ #(目的地目录存在, 先删除) —target-dir ‘/sqoop_emp’ \ #指定导入hdfs的目录 默认家目录的 —fields-terminated-by ‘ ‘ \ #指定分割符 默认分割符号为 逗号 —split-by id \ #表示按照那个字段进行分割表数据 建议添加 -m 2 #指定maptask数

条件导入 /usr/bin/sqoop import \ —connect jdbc:mysql://192.168.52.150:3306/test —username root —password 123456 \ —delete-target-dir -m 1 \ —query ‘select phno from emp_conn where 1=1 and $CONDITIONS’ \ —target-dir /sqoop/emp_conn

注意 1.条件导入不能出现—table 参数

  1. 2.$CONDITIONS 部分必须要存在如果条件部分是双引号那么 \$CONDITION用反引号处理
  1. <a name="BZuGn"></a>
  2. ### 3.3使用sqoop导入到hive中(全量导入)

第一步: 在hive中先建立目标表 create database sqooptohive; use sqooptohive;

  create table sqooptohive.emp_hive(
    id int,
    name string,
    age int ,
    class string
) row format delimited fields terminated by '\t' stored as orc;

第二部: 执行数据导入操作: HCataLog sqoop import \ —connect jdbc:mysql://192.168.52.150:3306/test \ —username root \ —password 123456 \ —table emp \ —fields-terminated-by ‘\t’ \ —hcatalog-database sqooptohive \ #指定数据库名称 —hcatalog-table emp_hive \ #指定表的名称 -m 1 注意: 使用此种方式, 在hive中建表的时候, 必须保证hive表字段和对应mysql表的字段名称保持一致

<a name="obOUW"></a>
### 3.3hadoop导出到RDBMS

第一步: 需要在mysql中创建目标表 (必须操作)

CREATE TABLE emp_out ( id INT(11) DEFAULT NULL, name VARCHAR(100) DEFAULT NULL, deg VARCHAR(100) DEFAULT NULL, salary INT(11) DEFAULT NULL, dept VARCHAR(10) DEFAULT NULL ) ENGINE=INNODB DEFAULT CHARSET=utf8;

导出

sqoop export \ —connect jdbc:mysql://192.168.52.150:3306/test \ —username root \ —password 123456 \ —table emp_out \ —hcatalog-database sqooptohive \ —hcatalog-table emp_hive \ -m 1 ```

3.4 sqoop的相关参数

参数 说明
—connect 连接关系型数据库的URL
—username 连接数据库的用户名
—password 连接数据库的密码
—driver JDBC的driver class
—query或—e 将查询结果的数据导入,使用时必须伴随参—target-dir,—hcatalog-table,如果查询中有where条件,则条件后必须加上CONDITIONS关键字。 如果使用双引号包含sql,则CONDITIONS前要加上\以完成转义:\$CONDITIONS
—hcatalog-database 指定HCatalog表的数据库名称。如果未指定,default则使用默认数据库名称。提供 —hcatalog-database不带选项—hcatalog-table是错误的。
—hcatalog-table 此选项的参数值为HCatalog表名。该—hcatalog-table选项的存在表示导入或导出作业是使用HCatalog表完成的,并且是HCatalog作业的必需选项。
—create-hcatalog-table 此选项指定在导入数据时是否应自动创建HCatalog表。表名将与转换为小写的数据库表名相同。
—hcatalog-storage-stanza ‘stored as orc tblproperties (“orc.compress”=”SNAPPY”)’ \ 建表时追加存储格式到建表语句中,tblproperties修改表的属性,这里设置orc的压缩格式为SNAPPY
-m 指定并行处理的MapReduce任务数量。 -m不为1时,需要用split-by指定分片字段进行并行导入,尽量指定int型。
—split-by id 如果指定-split by, 必须使用$CONDITIONS关键字, 双引号的查询语句还要加\
—hcatalog-partition-keys —hcatalog-partition-values keys和values必须同时存在,相当于指定静态分区。允许将多个键和值提供为静态分区键。多个选项值之间用,(逗号)分隔。比如: —hcatalog-partition-keys year,month,day —hcatalog-partition-values 1999,12,31
—null-string ‘\N’ —null-non-string ‘\N’ 指定mysql数据为空值时用什么符号存储,null-string针对string类型的NULL值处理,—null-non-string针对非string类型的NULL值处理
—hive-drop-import-delims 设置无视字符串中的分割符(hcatalog默认开启)
—fields-terminated-by ‘\t’ 设置字段分隔符

3.5 抽取方式的比较

支持数据格式 是否允许覆盖 字段名要求
原生APi 支持的格式少 允许 字段名不要求按照顺序
HCatalog 支持数据格式多比如ORC,SequenceFile,CSV, JSON 不允许覆盖只能追加 要求字段名必须相同