《人民大2023Hadoop技术与应用教学课件u8》由会员分享,可在线阅读,更多相关《人民大2023Hadoop技术与应用教学课件u8(84页珍藏版)》请在金锄头文库上搜索。
1、Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 【项目7回顾】1.了解Hive功能、来源和优缺。2.理解Hive体系架构及各个组件功能。(重点)3.掌握Hive数据类型,包括基本数据类型和集合数据类型。4.理解Hive数据模型,包括表、分区和分桶。(重点)5.掌握Hive函数,主要为内置函数。(重点,难点)6.理解Hive部署要点,包括运行环境、运行模式和配置文件hive-site.xml、hive-env.sh等。(重点)7.掌握HiveQL中的DDL、DML、SELECT语句
2、(重点,难点),了解接口HWI和Hive API。8.熟练掌握在Linux环境下部署本地模式Hive,综合运用HiveQL语句进行海量结构化数据的离线分析。(重点,难点)Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 【课程内容】开学第一课(理论1学时)项目1 部署全分布模式Hadoop集群(理论3学时+实验2学时)项目2 HDFS实战(理论4学时+实验2学时)项目3 MapReduce编程(理论4学时+实验2学时)项目4 YARN实战(理论2学时+实验2学时)项目5 部署ZooKeeper集群和ZooKeeper实战(理论2学时+实验2学时)项目6 部署全分
3、布模式HBase集群和HBase实战(理论2学时+实验2学时)项目7 部署本地模式Hive和Hive实战(理论4学时+实验2学时)项目8 Sqoop实战(理论2学时+实验2学时)项目9 Flume实战(理论2学时+实验2学时)项目10 Kafka实战(理论2学时+实验2学时)Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 项目8 Sqoop实战8.1 初识Sqoop8.2 Sqoop体系架构8.3 Sqoop部署要点(重点)8.4 Sqoop接口(重点)8.5 项目实训:部署Sqoop和Sqoop实战(实验)Hadoop技术与应用ISBN978-7-300-3
4、1678-9 西京学院徐鲁辉 8.1 初识SqoopApache Sqoop(SQL-to-Hadoop)是一个开源的基于Hadoop的数据迁移工具,是Apache的顶级项目,主要用于在Hadoop和结构化存储器之间传递数据。Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.1 初识SqoopSqoop产生背景Hadoop平台的最大优势在于它支持使用不同形式的数据。HDFS能够可靠地存储日志和来自不同渠道的其它数据,MapReduce程序能够解析多种“特定的”数据格式,抽取相关信息并将多个数据集组合成有用的结果。但是为了能够和HDFS之外的数据存储库进行交互
5、,必须通过开发MapReduce应用程序使用外部API来访问数据。例如,实际生产中经常会遇到这样的问题:将关系数据库中某张表的数据导入到Hadoop(HDFS/Hive/HBase)上,便于廉价的分析与处理,或将Hadoop上的数据导出到关系数据库中,可利用强大的SQL进一步分析和展示。那么如何解决这种问题呢?一般情况下是开发MapReduce来实现,数据导入时MapReduce输入为DBInputFormat,输出为TextOutputFormat;数据导出时MapReduce输入为TextInputFormat,输出为DBOutputFormat。使用MapReduce处理以上场景时存在问
6、题,那就是每次都需要编写MapReduce程序,非常麻烦。在没有出现Sqoop之前,实际生产中有许多类似的需求,都需要通过编写MapReduce程序然后形成一个工具去解决,后来慢慢就将该工具代码整理出一个框架并逐步完善,最终就有了Sqoop的诞生。Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.1 初识SqoopSqoop概述Apache Sqoop是一个开源工具,主要用于在Hadoop和关系数据库、数据仓库、NoSQL之间传递数据。通过Sqoop,可以方便地将数据从关系数据库(Oracle、MySQL、PostgreSQL等)导入到Hadoop(HDFS
7、/Hive/HBase),用于进一步的处理,一旦生成最终的分析结果,便可以再将这些结果导出到结构化数据存储如关系数据库中,供其他客户端使用。RDBMS(MySQL、Oracle、Postgresql、DB2)Hadoop(HDFS、Hive、HBase)Sqoop工具ImportExportHadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.1 初识SqoopSqoop概述Sqoop是连接传统关系型数据库和Hadoop的桥梁,它不需要开发人员编写MapReduce程序,只需要编写简单的配置脚本即可,大大提升了开发效率。Sqoop核心设计思想是利用MapRedu
8、ce加快数据传输速度。也就是说,Sqoop的导入和导出功能是通过MapReduce作业实现的,所以它是一种批处理方式进行数据传输,难以实现实时数据的导入和导出。Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.1 初识SqoopSqoop版本Sqoop的版本主要分为Sqoop 1和Sqoop 2,1.4.X版本称为Sqoop 1,1.99.X版本称为Sqoop 2。Sqoop 1和Sqoop 2在架构和使用上有很大区别,Sqoop 2对Sqoop 1进行了重写,以解决Sqoop 1架构上的局限性。Sqoop 1是命令行工具,不提供Java API,因此很难嵌
9、入到其他程序中,另外,Sqoop 1的所有连接器都必须掌握所有输出格式,因此,编写新的连接器就需要做大量的工作。Sqoop 2具有运行作业的服务器组件和一整套客户端,包括命令行接口(CLI)、网站用户界面、REST API和Java API,Sqoop 2还能使用其它执行引擎例如Spark。读者应注意的是,Sqoop 2的CLI和Sqoop 1的CLI并不兼容。Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.1 初识SqoopSqoop版本HadoopContribModuleClouderaGitHubApacheIncubatorApacheSqoop
10、HADOOP-5815MAPREDUCE-1644Sqoop孵化期Sqoop独立2009年5月2010年4月2011年6月2012年3月56个补丁191个补丁116个补丁1.0.01.1.01.2.01.3.01.4.01.4.1Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.2 Sqoop体系架构Sqoop 1的架构非常简单,其整合了Hive、HBase,通过MapTask来传输数据,Map负责数据的加载、转换。命令SqoopHadoopMapTaskHDFS/Hive/HBase企业数据仓库基于文档的系统关系型数据库Hadoop技术与应用ISBN978
11、-7-300-31678-9 西京学院徐鲁辉 8.3 Sqoop部署要点8.3.1 Sqoop运行环境8.3.2 Sqoop配置文件Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.3.1 Sqoop运行环境1)操作系统Sqoop支持不同平台,在当前绝大多数主流的操作系统上都能够运行,例如GNU/Linux、Windows、Mac OS X等,但是在Mac OS X上存在兼容性错误,若采用Windows,需要使用cygwin完成Sqoop的安装和使用,Sqoop主要在Linux上完成操作和测试,官方推荐使用Linux。编者采用的操作系统为Linux发行版Ce
12、ntOS 7。2)Java环境Sqoop采用Java语言编写,因此它的运行环境需要Java环境的支持。编者采用的Java为Oracle JDK 1.8。3)Hadoop环境Sqoop是基于Hadoop的数据迁移工具,因此还需要部署好Hadoop集群。目前Sqoop支持4个版本的Hadoop,分别是0.20、0.23、1.0 和2.0。编者采用的Hadoop为Hadoop 2.9.2。Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.3.2 Sqoop配置文件Sqoop启动时,默认读取$SQOOP_HOME/conf/sqoop-env.sh文件,该文件需要配
13、置Sqoop的运行参数,即Hadoop相关的环境变量。参数名说明HADOOP_COMMON_HOME指定bin/hadoop路径HADOOP_MAPRED_HOME指定hadoop-*-core.jar路径HBASE_HOME指定bin/hbase路径HIVE_HOME指定bin/hive路径ZOOCFGDIR指定ZooKeeper配置文件路径Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.4 Sqoop接口8.4.1 Sqoop Shell8.4.2 Sqoop APIHadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.
14、4.1 Sqoop Shell1.命令入口Sqoop命令的语法格式如下所示:sqoop COMMAND ARGS使用命令“sqoop help”可查看完整帮助信息。Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 Sqoop 1.4.7中提供的参数COMMAND命令功能描述codegen将关系数据库的表映射为Java文件、Java Class文件以及jar包create-hive-table生成与关系数据库表的表结构对应的Hive表eval预先了解SQL语句是否正确,并查看SQL执行结果export将数据从HDFS导出到关系数据库某个表help显示Sqoop帮助
15、信息import将数据从关系数据库某个表导入到HDFSimport-all-tables导入某个数据库下所有表到HDFSimport-mainframe将数据集从某个主机导入到HDFSjob用来生成一个Sqoop Job,生成后,该任务并不执行,除非使用命令执行该任务list-databases列出所有数据库名list-tables列出某个数据库下的所有表merge将HDFS中不同目录下的数据整合一起,并存放在指定目录中metastore记录Sqoop Job的元数据信息,如果不启动metastore实例,则默认的元数据存储目录为:/.sqoop,如果要更改存储目录,可在配置文件sqoop-s
16、ite.xml中进行更改version显示Sqoop版本信息Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 8.4.1 Sqoop Shell通过将特定工具的名称作为参数,help还能提供对该工具的使用说明。Hadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 2.导入命令sqoop importxuluhuimaster$sqoop help importusage:sqoop import GENERIC-ARGS TOOL-ARGS/通用参数Common arguments:-connect Specify JDBC connect string -password Set authentication password -username Set authentication usernameHadoop技术与应用ISBN978-7-300-31678-9 西京学院徐鲁辉 2.导入命令sqoop import/导入控制参数Import control arguments:-as-parquetfileImports