zoukankan      html  css  js  c++  java
  • day12Flume、azkaban、sqoop

    1.PS:Hive中好少有update这个方法,因为他主要是用来批量数据的处理分析。

    2.PS:软连接和硬连接的区别

    软连接就是我们普通和Windows系统一样的快捷方式,她也是一个文件

    硬连接就是他是一个inode,对文件会有引用,删除这个快捷方式不会删除文件。

    3.pig其实和hive一样,只不过hive有自己的语法,pig还要专门学习他的东西,通用性不太强。

    --------------------------------------------------------------------------------------------------------

    PS:这是过几天要写的一个项目:

         首先对日志文件进行收集,使用flume,第二部进行数据清理;传入hive库;进入mysql,最好进行数据展示

    ---------------------------------------------------------------------------------------------------

    1.1.2 运行机制

    1、 Flume分布式系统中最核心的角色是agentflume采集系统就是由一个个agent所连接起来形成

    2、 每一个agent相当于一个数据传递员,内部有三个组件:

       a) Source:采集源,用于跟数据源对接,以获取数据 

       b) Sink:下沉地,采集数据的传送目的,用于往下一级agent传递数据或者往最终存储系统传递数据

        c) Channelangent内部的数据传输通道,用于从source将数据传递到sink

    PS:一个agent就是一个进程

    1. 简单结构 :单个agent采集数据

    2. 复杂结构:多级agent之间串联

    -----------------------------------

    1.2.1 Flume的安装部署

    1、Flume的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境

    上传安装包到数据源所在节点上

    然后解压  tar -zxvf apache-flume-1.6.0-bin.tar.gz

    然后进入flume的目录,修改conf下的flume-env.sh,在里面配置JAVA_HOME

    2、根据数据采集的需求配置采集方案,描述在配置文件中(文件名可任意自定义)

    3指定采集方案配置文件,在相应的节点上启动flume agent

    ---------Step-演示将采集到数据显示到控制台上

    1.解压文件到apps中

     

    2.到conf文件下,创建配置测试文件,不同的文件不一样

    2  、  启动agent去采集数据

    bin/flume-ng agent -c conf -f conf/netcat-logger.conf -n a1  -Dflume.root.logger=INFO,console

    -c conf   指定flume自身的配置文件所在目录

    -f conf/netcat-logger.con  指定我们所描述的采集方案

    -n a1  指定我们这个agent的名字

    TelNet就行输入,测试;这里数据和显示不在一起,现实生活中不会是这样的

    -------------------------监视文件夹方法

     1.先创建一个文件夹

    2.在conf中创建文件

    # Name the components on this agent
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    # Describe/configure the source
    #监听目录,spoolDir指定目录, fileHeader要不要给文件夹前坠名
    a1.sources.r1.type = spooldir
    a1.sources.r1.spoolDir = /home/hadoop/flumespool
    a1.sources.r1.fileHeader = true
    
    # Describe the sink
    a1.sinks.k1.type = logger
    
    # Use a channel which buffers events in memory
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    
    # Bind the source and sink to the channel
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1

    3.监视文件夹

    启动命令:
    bin/flume-ng agent -c ./conf -f ./conf/spool-logger.conf -n a1 -Dflume.root.logger=INFO,console

    ---------------------------------------------------------------

    测试

    1.往/home/hadoop/flumeSpool放文件(mv ././xxxFile /home/hadoop/flumeSpool),但是不要在里面生成文件

    2.  移入文件以后,根据移入的文件    响应的文件中的内容

     

    PS:将数据移入后会自动变为completed,会监视文件夹的数据。最好是将生成的数据放入文件夹,文件夹的名字不能重名

    ------------------------------------------多级Agent串联

     

    PS:具体的操作我没有去实现,主要就是
    1.将bee1的flume配置发给bee2,分别配置 相印的配置文件,
    2.不停的在配置文件中指定的位置打印 数据
    3.然后在bee2中出结果

    工作流调度器azkaban----------------他是一种服务

    2.1.3 常见工作流调度系统

    市面上目前有许多工作流调度器

    hadoop领域,常见的工作流调度器有Oozie, Azkaban,Cascading,Hamake等

     -----------------------------------------------Azkaban 配置步骤

    1.创建一个azkaban的文件夹,解压文件

    2.azkaban脚本导入

    将解压后的mysql 脚本,导入到mysql:

    进入mysql

    mysql> create database azkaban;

    mysql> use azkaban;

    Database changed

    mysql> source /home/hadoop/azkaban-2.5.0/create-all-sql-2.5.0.sql;

    3.创建SSL配置(因为传输协议使用的是https,所以需要这一步操作)

    参考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL

    命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA

    运行此命令后,会提示输入当前生成 keystor的密码及相应信息,输入的密码请劳记,信息如下:

    输入keystore密码: 

    再次输入新密码:

    您的名字与姓氏是什么?

      [Unknown]: 

    您的组织单位名称是什么?

      [Unknown]: 

    您的组织名称是什么?

      [Unknown]: 

    您所在的城市或区域名称是什么?

      [Unknown]: 

    您所在的州或省份名称是什么?

      [Unknown]: 

    该单位的两字母国家代码是什么

      [Unknown]:  CN

    CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?

      [否]:  y

    输入<jetty>的主密码

            (如果和 keystore 密码相同,按回车): 

    再次输入新密码:

    完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 考贝到 azkaban web服务器根目录中.如:cp keystore azkaban/server

    4.  配置文件--------------------统一时间

    注:先配置好服务器节点上的时区

    1、先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可

    2、拷贝该时区文件,覆盖系统本地时区配置

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  

    然后对所有的机器执行该操作

     

    3.修改配置文件,下面是配置邮件地址,复制收发邮件。暂时先不配

    --------------------------------------------------------------------

    PS:这里是修改Server的配置

    PS:web服务器的配置

     PS:修改excutor

    启动

    web服务器

    在azkaban web服务器目录下执行启动命令

    bin/azkaban-web-start.sh

    注:在web服务器根目录运行

    或者启动到后台

    nohup  bin/azkaban-web-start.sh  1>/tmp/azstd.out  2>/tmp/azerr.out &

    执行服务器

    在执行服务器目录下执行启动命令

    bin/azkaban-executor-start.sh

    注:只能要执行服务器根目录运行

     

    启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码(admin),点击 login.

    --------------------------------------------------------------------------------------------------------------------------------

    2.4 Azkaban实战

    PS:因为Azkaba最好执行command命令,因为jar包不太常用

    Azkaba内置的任务类型支持commandjava

    Command类型单一job示例

    1、创建job描述文件

    vi command.job

    #command.job

    type=command                                                    

    command=echo 'hello'

     

     

    2、job资源文件打包成zip文件

    zip command.job

     

    3、通过azkabanweb管理平台创建project并上传job压缩包

    首先创建project

     

    上传zip

     

    4启动执行该job

    PS:在执行命令之前,也有调度执行,还是立即执行。为了测试,我们选择立即执行。

     

     PS:后面还有一些例子,没有做。

     PS:如果提交文件以后,执行的什么都是正确的,就是 运行错误,可能文件格式没有保存成UTF-8

    ----------------------------------------------------------------------------------------------------------------------------------------------------

    3. sqoop数据迁移

    3.1 概述

    sqoopapache旗下一款Hadoop和关系数据库服务器之间传送数据”的工具。

    导入数据MySQLOracle导入数据到HadoopHDFSHIVEHBASE等数据存储系统;

    导出数据:Hadoop的文件系统中导出数据到关系数据库

     

    3.2 工作机制

    导入或导出命令翻译成mapreduce程序来实现

    在翻译出的mapreduce中主要是对inputformatoutputformat进行定制

     3.3 sqoop实战及原理

    3.3.1 sqoop安装

    安装sqoop的前提是已经具备javahadoop的环境

    1、下载并解压

    PS: 解压并修改文件夹名

    PS:到sqoop文件夹下修改   配置文件的名字

    PS:编辑sqoop-env.sh

    PS:从hive中拷贝文件,然后启动

    PS:导入数据,从mysql导入hdfs;

    ------------------------------------自己修改查找数据库进行sqoop

    bin/sqoop import   

    --connect jdbc:mysql://localhost:3306/azkaban   

    --username root  

    --password root   

    --table project_files   

    --m 1  

    ---------------------

    PS:如果没有指定数据的位置,那么导入的数据就放在其就默认放在HADOOP_HOME/bin/hadoop    (导入:从mysql到hdfs)

    为了验证在HDFS导入的数据,请使用以下命令查看导入的数据

    $ HADOOP_HOME/bin/hadoop fs -cat /user/hadoop/emp/part-m-00000

     -------------------------------------------

    3.5 Sqoop的数据导出(需要在mysql端手动的创建库表)

    将数据从HDFS导出到RDBMS数据库

    导出前,目标表必须存在于目标数据库中。

    默认操作是从将文件中的数据使用INSERT语句插入到表中

    更新模式是生成UPDATE语句更新表数据

    语法

    以下是export命令语法。

    $ sqoop export (generic-args) (export-args)

    示例

    数据是在HDFS “EMP/”目录的emp_data文件中。所述emp_data如下

    1201, gopal,     manager, 50000, TP

    1202, manisha,   preader, 50000, TP

    1203, kalil,     php dev, 30000, AC

    1204, prasanth,  php dev, 30000, AC

    1205, kranthi,   admin,   20000, TP

    1206, satish p,  grp des, 20000, GR

    1、首先需要手动创建mysql中的目标表

    $ mysql

    mysql> USE db;

    mysql> CREATE TABLE employee (

       id INT NOT NULL PRIMARY KEY,

       name VARCHAR(20),

       deg VARCHAR(20),

       salary INT,

       dept VARCHAR(10));

    2、然后执行导出命令

    bin/sqoop export

    --connect jdbc:mysql://hdp-node-01:3306/test

    --username root

    --password root

    --table employee

    --export-dir /user/hadoop/emp/

    3验证表mysql命令行。

    mysql>select * from employee;

    如果给定的数据存储成功,那么可以找到数据在如下的employee表。

    +------+--------------+-------------+-------------------+--------+

    | Id   | Name         | Designation | Salary            | Dept   |

    +------+--------------+-------------+-------------------+--------+

    | 1201 | gopal        | manager     | 50000             | TP     |

    | 1202 | manisha      | preader     | 50000             | TP     |

    | 1203 | kalil        | php dev     | 30000               | AC     |

    | 1204 | prasanth     | php dev     | 30000             | AC     |

    | 1205 | kranthi      | admin       | 20000             | TP     |

    | 1206 | satish p     | grp des     | 20000             | GR     |

    +------+--------------+-------------+-------------------+--------+

  • 相关阅读:
    UVA 439 Knight Moves
    UVA 673 Parentheses Balance
    UVa 536 Tree Recovery
    UVA 712 S-Trees
    UVA 12657 Boxes in a Line
    UVA 679 Dropping Balls
    UVA 1603 Square Destroyer
    UVA 1343 The Rotation Game
    UVA 1374 Power Calculus
    UVA 12558 Egyptian Fractions (HARD version)
  • 原文地址:https://www.cnblogs.com/bee-home/p/8530700.html
Copyright © 2011-2022 走看看