oozie与sqoop入门

1、学习oozie:

    它是一个用于管理Hadoop的工作流程调度系统。Workflow是一个DAG(有向无环图)。

    运行java:

<action name='java1'>

    <java>

          <main-class> a.b.c.MyJavaMain </main-class>

          <java-opts> -Xms512m </java-opts>

          <arg> arg1 </arg>

          <arg> arg2 </arg>

            <job-tracker>foo.bar:8021</job-tracker>

              <name-node>foo1.bar:8020</name-node>

              <configuration>

               <property>

                    <name>abc</name>

                    <value>def</value>

               </property>

            </configuration>

    </java>

  </action>

java-opts:命令行的参数,这些参数用于启动将执行java应用程序的JVM。

arg:包含面函数的参数。

java应用程序在hadoop集群中作为map-reduce作业执行,只有一个mapper任务。必须按照如下格式:

  • <job-tracker>

  • <name-node>

  • <configuration>

运行MapReduce:

    三个组件:

        job.properties: 指定运行工作流程所需的基本参数。 要指定的一个强制属性是oozie.wf.application.path,它指向存在workflow.xml的HDFS的位置。

       workflow.xml:

                 <jobtracker> element is used to specify the url of the hadoop job tracker.

                <namenode> element is used to specify the url of the hadoop namenode. 

                <prepare>元素用于指定在开始操作(例如删除现有输出目录(<delete>)或创建新输出目录(<mkdir>))之前需要执行的操作列表。

mapred.job.queue.name指定作业将提交到的队列名。如果未提及,则假定默认队列为default。

                mapred.mapper.class指定要使用的Mapper类。

                mapred.reducer.class指定要使用的Reducer类。

                mapred.input.dir指定HDFS上的输入目录,MapReduce作业的输入位于该目录中。

                mapred.output.dir指定HDFS上将生成MapReduce作业输出的目录。

 

   Libraries: 工作流中使用的库

   运行时:

         -config选项指定属性文件的位置,在我们的示例中位于用户的主目录中。 (注意:只有工作流和库需要在HDFS上,而不是属性文件)。

        -oozie选项指定Oozie服务器的位置。 如果使用服务器URL设置变量OOZIE_URL,则可以省略此项。

        -info选项查看其状态。

MapReduce的其他说明:

    1、变量可以在一下位置定义,并且依据相应顺序作用:

  • job.properties

  • config-default.xml

  • workflow.xml

  • job-xml file for job-xml

    2、访问以前的hadoop计数器

                  <arg>${hadoop:counters("mr1")["COMMON"]["COMMON.ERROR_ACCESS_DH_FILES"]}</arg>

    3、为hadoop job 增加内存

                <property>

                  <name>mapred.child.java.opts</name>

                  <value>-Xmx1024M</value>

                </property>

    4、使用用户自定义输入

                <property>

                  <name>mapred.input.format.class</name>

                  <value>com.yahoo.ymail.antispam.featurelibrary.TextInputFormat</value>

                </property>

    5、使用“#”创建符号链接;<file>testdir1/dict.txt#dict1</file>

            <archive>testtar.tgz#tgzdir</archive>

    6、使用streaming:

                <streaming>

                    <mapper>/bin/cat</mapper>

                    <reducer>/usr/bin/wc</reducer>

              </streaming>

   运行Pig:  Pig是一个分析大型数据集的平台,它包含用于表达数据分析程序的高级语言,以及用于评估这些程序的基础结构。

    <script>:执行的Pig脚本

    <argument>:脚本的参数

    运行Sqoop:用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具。

     要运行Sqoop作业,必须使用resource-manager,name-node和Sqoop命令或arg元素以及配置来配置sqoop操作。

     prepare元素指示在开始作业之前要删除或创建的路径列表。 指定的路径必须以hdfs:// HOST:PORT开头。

    job-xml元素指定包含Sqoop作业配置的文件。 从模式0.3开始,允许多个job-xml元素以指定多个job.xml文件。

    configuration元素包含传递给Sqoop作业的配置属性。

使用command元素时,Oozie会将每个空间上的命令拆分为多个参数。

<command>import --connect jdbc:hsqldb:file:db.hsqldb --table TT --target-dir hdfs://localhost:8020/user/tucu/foo -m 1</command>

当使用arg元素时,Oozie会将每个参数值作为参数传递给Sqoop。

当单个参数中有空格时,应使用arg变体。

<arg>import</arg>

<arg>--connect</arg>

<arg>jdbc:hsqldb:file:db.hsqldb</arg>

<arg>--table</arg>

<arg>TT</arg>

<arg>--target-dir</arg>

<arg>hdfs://localhost:8020/user/tucu/foo</arg>

<arg>-m</arg>

<arg>1</arg>

2、学习sqoop

    http://sqoop.apache.org/docs/1.99.7/user/CommandLineClient.html

    http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html

     两代之间是两个完全不同的版本,不兼容。sqoop2: (1) 引入sqoop server,集中化管理connector等。(2) 多种访问方式:CLI,Web UI,REST API。(3) 引入基于角色的安全机制。我实习的公司使用了sqoop1。

   codegen                生成与数据库记录交互的代码

   create-hive-table  将表定义导入Hive

   eval                        评估SQL语句并显示结果

   export                    将HDFS目录导出到数据库表

   help                        列出可用命令

   import                    将数据库中的表导入HDFS

   import-all-tables    将表从数据库导入HDFS

   import-mainframe 将主机数据集导入HDFS

   list-databases        列出服务器上的可用数据库

   list-tables               列出数据库中的可用表

   version                   显示版本信息

   主要用到import和export。

   import需要注意-password的使用,因为有可能会造成窥探。可以采用--password-file或者--password-alias。 Sqoop使用-m或--num-mappers参数指定映射任务(并行进程)的数量默认情况下,使用四个任务,不要将并行度增加到大于MapReduce群集中可用的并行度。 同样,不要将并行度提高到数据库可以合理支持的程度。 Sqoop使用拆分列来分割工作负载。默认情况下,Sqoop将识别表中的主键列(如果存在)并将其用作拆分列。例如,如果您的表的主键列id为最小值为0且最大值为1000,并且Sqoop被指示使用4个任务,则Sqoop将运行四个进程,在不同的任务中设置为(0,250),(250,500),(500,750)和(750,1001)。

--connect <jdbc-uri>指定JDBC连接字符串

--connection-manager <class-name>指定要使用的连接管理器类

--driver <class-name>手动指定要使用的JDBC驱动程序类

--hadoop-mapred-home <dir>覆盖$ HADOOP_MAPRED_HOME

--help打印使用说明

--password-file设置包含验证密码的文件的路径

-P从控制台读取密码

--password <密码>设置验证密码

--username <username>设置认证用户名

--verbose工作时打印更多信息

--connection-param-file <filename>提供连接参数的可选属性文件

--relaxed-isolation将连接事务隔离设置为对映射器未提交的读取。

    export需要注意--export-dir参数和--table或--call之一是必需的。它们指定要在数据库(或要调用的存储过程)中填充的表,以及包含源数据的HDFS中的目录。

--connect <jdbc-uri>指定JDBC连接字符串

--connection-manager <class-name>指定要使用的连接管理器类

--driver <class-name>手动指定要使用的JDBC驱动程序类

--hadoop-mapred-home <dir>覆盖$ HADOOP_MAPRED_HOME

--help打印使用说明

--password-file设置包含验证密码的文件的路径

-P从控制台读取密码

--password <密码>设置验证密码

--username <username>设置认证用户名

--verbose工作时打印更多信息

--connection-param-file <filename>提供连接参数的可选属性文件

--relaxed-isolation将连接事务隔离设置为对映射器未提交的读取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值