Apache Sqoop性能调整
Sqoop
是 Apache
基础提供的一种工具,在大数据世界中通常用于异构关系数据库 (RDBMS
) 和 Hadoop 分布式文件系统 (HDFS)
之间的导入-导出数百万条记录
。这种数据传输可能导致不同的加载时间,从几分钟到几个小时不等。此方案是全世界数据工程师在引擎盖下查看微调设置的情况。性能调整
的目标是在更短的时间内加载更多数据,从而提高效率并减少网络超时时数据丢失的机会。
通常,Sqoop 的性能调整可以通过:
控制并行性
控制数据传输过程
控制并行性
Sqoop
适用于在Hadoop
中实现的 MapReduce
编程模型。Sqoop
并行导入大多数关系数据库的数据。每个作业的map
任务数决定了其并行性。通过控制并行性,我们可以处理数据库上的负载,从而处理其性能。以下是 Sqoop
作业中利用并行性的几种方法:
更改mapper的数量
默认情况下,典型的 Sqoop
作业会启动四个mappers
。为了优化性能,将mapper任务(并行进程)增加到整数值 8
或 16
可以显示某些数据库中性能的增强。
通过使用 -m或参数–num-mappers,我们可以在 Sqoop
中设置并行性的程度。例如,将映射器的数量更改为 10:
sqoop import
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--num-mappers 10
需要记住的一些事情是,mapper
任务的数量应该小于可能的最大并行数据库连接数。并行性程度的增加应小于 MapReduce
群集中可用的增加程度。
按查询拆分
执行并行导入时,Sqoop
需要一个条件,通过该标准可以拆分工作负载。Sqoop
使用拆分列拆分工作负荷。默认情况下,Sqoop
将标识表中的primary key
(如果存在),并用作拆分列
。从数据库中检索拆分列的低值和高值,并且映射任务对总范围的均匀大小的组件进行操作。
参数根据指定的mapper
数量统一拆分列数据。--split-by
的语法由以下方法提供:
sqoop import
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--split-by city_id
控制数据传输过程
提高性能的一个流行方法是管理我们导入和导出数据的方式。以下是几种方法:
批处理
批处理意味着在导出数据时,可以将相关的 SQL
语句分组到批处理中。
JDBC 接口公开了一个 API,用于在具有多个值集的准备语句中执行批处理。使用--batch
参数,Sqoop
可以利用此优势。此 API 存在于所有 JDBC
驱动程序中,因为它是 JDBC 接口所需的。
默认情况下,在 Sqoop
中禁用批处理。使用 --batch
参数启用 JDBC 批处理。
sqoop export
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--export-dir /data/cities \
--batch
提取大小
可以一次导入的默认记录数为1000
。可以使用 Fetch
大小参数覆盖这一点,该参数用于指定 Sqoop
一次可以使用以下语法导入的记录数:
sqoop import
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--fetch-size=n
其中n表示 Sqoop
一次必须获取的条目数。
根据可用内存和带宽,可以增加提取大小参数的值,即需要读取的数据量。
直接模式
默认情况下,Sqoop
导入过程使用 JDBC
,它提供合理的跨供应商导入通道支持。但是,某些数据库可以通过使用特定于数据库的实用程序实现更高的性能,因为它们经过优化,可提供最佳的传输速度,同时减少数据库服务器的压力。
通过提供--direct
参数,Sqoop
被迫尝试使用直接导入通道。此通道的性能可能高于使用 JDBC
。
sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--direct
此快速导入具有多种限制。例如,并非所有数据库都有可用的本机实用程序。此模式并非适用于每个受支持的数据库。
Sqoop
仅对 MySQL
和 PostgreSQL
直接提供支持。
自定义边界查询
如之前所见,通过拆分统一分布数据
以进行导入。如果列具有非均匀值,则如果单独使用拆分参数时未获得所需结果,则可以使用边界查询。
理想情况下,我们使用min(id) 和 max(id) 以及表名配置边界查询参数。
sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--query 'SELECT normcities.id, \countries.country, \normcities.city \FROM normcities \JOIN countries USING(country_id) \WHERE $CONDITIONS' \
--split-by id \
--target-dir cities \
--boundary-query "select min(id), max(id) from normcities"
此处由 Sqoop
在内部使用,并将展开以选取城市表的最小 ID 和最大 ID 来拆分数据。通过使用自定义值,可以派生高效拆分数据
,从而在一般方面提高性能。$CONDITIONS
结论
性能调整的目标是在不损害资源的情况下实现显著的性能。希望使用上述技术,我们应该能够提高效率,并显著缩短数据传输时间。
参考
Performance Tuning Apache Sqoop. Six definite ways to improve efficiency… | by Thomas George Thomas | The Startup | Medium
Apache Sqoop性能调整相关推荐
- Sqoop提速性能调整
Apache Sqoop性能调整 Sqoop 是 Apache 基础提供的一种工具,在大数据世界中通常用于异构关系数据库 (RDBMS) 和 Hadoop 分布式文件系统 (HDFS) 之间的导入-导 ...
- apache服务器性能不行,Apache服务器性能调优
文章目录 [隐藏] 工具 Apache mod_status Apache2Buddy 多处理模块 Prefork Worker Event 模块配置 StartServers MinSpareSer ...
- 九、OLTP 性能调整与优化--结语
OLTP性能调整与优化--结语 根据软件生命周期的瀑布模型,应用程序的性能在其设计阶段就已经有了质的定性.如果在应用程序开发完成之后才想到优化,一般就只能治标不治本,在遇到严重的性能问题时,甚至需要将 ...
- Sqoop找不到主类 Error: Could not find or load main class org.apache.sqoop.Sqoop
最近由于要使用Sqoop来到出数据到hdfs,可是发现Sqoop1.4.5跟hadoop2.X不兼容,需要对Sqoop1.4.5进行编译,编译的具体方法见:http://my.codeweblog.c ...
- DB2数据库性能调整和优化(第2版)
<DB2数据库性能调整和优化(第2版)> 基本信息 作者: 牛新庄 出版社:清华大学出版社 ISBN:9787302325260 上架时间:2013-7-3 出版日期:2013 年7月 开 ...
- nginx与apache详细性能对比
之前一直研究nginx的源代码,最近有时间也做了下nginx与apache的性能对比,希望能够够对大家有所帮助! 转载请注明:http://blog.csdn.net/lengzijian/artic ...
- WebSphere Application Server性能调整工具包
IBM已发布了WebSphere Application Server性能调整工具包 ,该工具包具有从Eclipse工作区*监视多个 WebSphere Application Server的功能. ...
- Oracle 优化和性能调整
Oracle 优化和性能调整 分析评价Oracle数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即: 数据库用户响应时间=系统 ...
- sql server 性能_SQL Server硬件性能调整
sql server 性能 SQL Server Performance Tuning can be a difficult assignment, especially when working w ...
最新文章
- android用户界面之WebView教程实例汇总
- USACO 1.3... 虫洞 解题报告(搜索+强大剪枝+模拟)
- flutter 主题切换
- SSH连接linux时,长时间不操作就断开的解决方案
- 通过使用CSS字体阴影效果解决hover图片时显示文字看不清的问题
- 只需四步完成java JDK1.8的下载安装与配置【图文详解】
- 前端笔记-thymeleaf显示数据及隐藏数据
- TTS-零基础入门-10分钟教你做一个语音功能
- 图解deconvolution(transpose convolution)
- 在线 LaTeX 公式编辑器
- 彻底删除VMware !!!
- excel在线_图片转Excel表格在线工具,分享几款不错的工具
- tp-link tl-wr740n 虚拟服务器,TP-Link TL-WR740N无线wifi无线桥接怎么设置 | tplogin.cn
- 普加计划甘特图功能介绍
- linux下好用的python编辑器_分享|Linux上几款好用的字幕编辑器
- python发邮件图片太长显示不出来_小白入门,用python 发送定时邮件,将Dataframe转为邮件正文,链接显示为图片...
- 互动媒体技术A1作业报告
- 一些常见的处理器如arm,arduino,stm32,51,树莓派的联系和区别,还有各自的长短板?
- unbutu服务器误删文件,Ubuntu误删系统文件修复办法
- CameraCaptureSession
热门文章
- docker非常详细的介绍
- 在 Linux 上监控 CPU 和 GPU 温度
- pycharm更改默认项目地址的方法
- linux uwsgi 非root,ubuntu-除非root用户,否则uWSGI Emperor权限被拒...
- python 文件名以数字开头_python-如何使XML标记以数字开头?
- Android移动应用基础教程【广播机制】
- java request 原理_JavaWeb response和request对象原理及实例解析
- 苹果怎么删除通讯录联系人_苹果手机通讯录怎么恢复?这才是正确的打开方式!...
- 计算机系统导论第九章,计算机系统导论 -- 读书笔记 -- 第三章 程序的机器级表示 (持续更新)...
- python编程语言集合_【python】编程语言入门经典100例--12