网站首页 > 编程文章 正文
原文:http://sqoop.apache.org/docs/1.99.7/admin.html
1.1. 安装
Sqoop提供了一个二进制包,该包包含两个独立组件:client和server.
- Server:需要在集群的单个节点上安装服务器。然后,该节点就可作为所有sqoop client的入口点。
- Client:Client可以安装在任何数量的机器上。
1.1.1. Server安装
复制Sqoop artifact到运行Sqoop server的目标机器上.
Sqoop server充当的是Hadoop client,因此必须在该节点上存在可用的Hadoop库(Yarn, Mapreduce, 和HDFS jar文件)和配置文件(core-site.xml, mapreduce-site.xml, ...).
您不需要运行Hadoop相关服务-在“网关”节点上运行server是完全可以的。
例如,你可以列出HDFS中的所有文件:
hadoop dfs -ls
Sqoop目前只支持Hadoop 2.6.0+版本. 要安装Sqoop server,请先解压tarball,并将新创建的forder设为工作目录。
# Decompress Sqoop distribution tarball
tar -xvf sqoop-<version>-bin-hadoop<hadoop-version>.tar.gz
# Move decompressed content to any location
mv sqoop-<version>-bin-hadoop<hadoop version>.tar.gz /usr/lib/sqoop
# Change working directory
cd /usr/lib/sqoop
1.1.1.1. Hadoop依赖
Sqoop server需要以下指向Hadoop库的环境变量:
- $HADOOP_COMMON_HOME
- $HADOOP_HDFS_HOME
- $HADOOP_MAPRED_HOME
- $HADOOP_YARN_HOME
你必须确保节点上已经正确定义了这些变量. 如果找不到Hadoop库,Sqoop server会启动失败。
Sqoop server会通过环境变量来查找Hadoop库。
在设置了$HADOOP_HOME环境变量的情况下,Sqoop会按如下位置来查找 jar包:
- $HADOOP_HOME/share/hadoop/common
- $HADOOP_HOME/share/hadoop/hdfs
- $HADOOP_HOME/share/hadoop/mapreduce
- $HADOOP_HOME/share/hadoop/yarn
当然,你也可以使用$HADOOP_COMMON_HOME, $HADOOP_HDFS_HOME, $HADOOP_MAPRED_HOME,$HADOOP_YARN_HOME 环境变量来分别指定common, hdfs, mapreduce, 和yarn的jar包位置.
# Export HADOOP_HOME variable
export HADOOP_HOME=/...
# Or alternatively HADOOP_*_HOME variables
export HADOOP_COMMON_HOME=/...
export HADOOP_HDFS_HOME=/...
export HADOOP_MAPRED_HOME=/...
export HADOOP_YARN_HOME=/...
注意
如果设置了$HADOOP_HOME环境变量,Sqoop会使用下面的位置:
- $HADOOP_HOME/share/hadoop/common
- $HADOOP_HOME/share/hadoop/hdfs
- $HADOOP_HOME/share/hadoop/mapreduce
- $HADOOP_HOME/share/hadoop/yarn
1.1.1.2. Hadoop配置
Sqoop server需要模拟用户(该用户是启动作业的用户而非运行server的用户)来访问集群内外的HDFS和其它资源。因此,你需要配置Hadoop相关设置,以便它能通过proxyuser系统来模拟用户。
为实现该目标,你需要在 core-site.xml 文件中创建两个properties:
- hadoop.proxyuser.$SERVER_USER.hosts
- hadoop.proxyuser.$SERVER_USER.groups
这里的$SERVER_USER 是运行Sqoop 2 server的用户. 对于大多数情况,配置*就可以了。
有关如何使用这些属性的细节,请参考Hadoop文档。
当server以sqoop2用户运行时,可在core-site.xml文件中配置如下属性:
<property>
<name>hadoop.proxyuser.sqoop2.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.sqoop2.groups</name>
<value>*</value>
</property>
如果您是通过所谓的系统用户(system user,默认ID小于min.user.id- 1000的用户)来运行Sqoop 2 server的, 则默认情况下,YARN会拒绝运行Sqoop 2 作业。要解决这一限制,可将运行 Sqoop 2 server的用户名(例如:sqoop2) 添加到container-executor.cfg文件中的allowed.system.users属性中.
例如,当以sqoop2用户来运行server时,我们可将下面的代码片段添加到container-executor.cfg文件中:
allowed.system.users=sqoop2
更多信息,请参考YARN文档。
1.1.1.3. 第三方jar
要将任何第三方jar传播(propagate)到Sqoop server classpath,可在文件系统的任何位置创建一个目录,并将它的位置导出到SQOOP_SERVER_EXTRA_LIB 变量中。
# Create directory for extra jars
mkdir -p /var/lib/sqoop2/
# Copy all your JDBC drivers to this directory
cp mysql-jdbc*.jar /var/lib/sqoop2/
cp postgresql-jdbc*.jar /var/lib/sqoop2/
# And finally export this directory to SQOOP_SERVER_EXTRA_LIB
export SQOOP_SERVER_EXTRA_LIB=/var/lib/sqoop2/
注意
由于licenses不兼容问题,Sqoop并未附带任何JDBC驱动。因此你必须通过该机制来安装所需的JDBC驱动。
1.1.1.4. 配置PATH
所有用户和管理员的shell命令都存储在bin/目录中.
为方便执行,建议将此目录添加到$PATH中,例如:
PATH=$PATH:`pwd`/bin/
Sqoop 2文档的其它章节会假定shell命令位于$PATH中。
1.1.1.5. 配置Server
Server 配置文件位于conf 目录.
sqoop_bootstrap.properties用于指定使用哪个provider来加载Sqoop server的其它配置。
大多数情况下,使用默认值PropertiesConfigurationProvider 就够了。
第二个配置文件为sqoop.properties,它包含可影响Sqoop server行为的其它配置属性.
该配置文件有很好的注释,因此可根据您的环境来检查这些配置属性是否符合需求。
大多数情况下,使用默认值(或进行微调)就可以了。
1.1.1.6. Repository初始化
首次启动Sqoop 2 server之前,需要初始化元数据存储库(metadata repository)。
可使用Upgrade tool 来初始化存储库:
sqoop2-tool upgrade
要验证配置是否正确,可使用Verify tool:
sqoop2-tool verify
...
Verification was successful.
Tool class org.apache.sqoop.tools.tool.VerifyTool has finished correctly
1.1.1.7. Server生命周期
在安装和配置了Server之后,你可以使用下面的命令来启动Sqoop server:
sqoop2-server start
要停止server,可使用如下命令:
sqoop2-server stop
默认Sqoop server守护进程会使用12000端口.
如果想使用其它端口,可修改conf/sqoop.properties配置文件中的org.apache.sqoop.jetty.port选项。
1.1.2. Client安装
只需要将Sqoop发行包拷贝到目标机器上,并将其解压到目标位置即可。
可使用下面的命令来启动client:
sqoop2-shell
有关Sqoop shell的更多文档,请查看Command Line Shell.
注意
Client不充当Hadoop client,因此没必要在节点上安装Hadoop包和配置文件。
1.2. 工具
工具是管理员可在Sqoop server机器上执行各种管理任务的server命令。工具会执行指定的任务,并确保其完成。没有哪个工具会实现为长时间运行的服务。
为运行每个工具要执行的维护任务,必须将其放置到与主Sqoop server相同的环境中执行。
tool binary会负责设置CLASSPATH和所需的其它环境变量。但通常管理员应该使用运行server的用户来运行该工具。通常,各种Hadoop版本会自动配置(例如:Apache Bigtop).
注意
不建议在Sqoop Server运行时运行这些工具,因为这可能导致数据损坏和服务中断。
可用工具清单:
- verify
- upgrade
要运行特定工具,可使用带特定工具名称的sqoop2-tool. 例如,要运行verify工具:
sqoop2-tool verify
注意
在运行Sqoop工具前,必须先停止Sqoop Server。在运行Sqoop Server时同时运行工具会导致数据损坏和服务中断。
1.2.1. 检验工具
通过启动除servlet之外的所有子系统(并将其拆下),verify tool 可以验证Sqoop server配置。
可使用如下命令来运行verify tool:
sqoop2-tool verify
如果验证成功,你可以看到如下类似信息:
Verification was successful.
Tool class org.apache.sqoop.tools.tool.VerifyTool has finished correctly
如果验证过程失败,它会打印如下消息:
Verification has failed, please check Server logs for further details.
Tool class org.apache.sqoop.tools.tool.VerifyTool has failed.
验证失败的详细信息,可以查看Sqoop server log。
1.2.2. 升级工具
可升级Sqoop2中所有版本化组件:包括修改存储库内的结构和元数据。
在已升级的Sqoop部署上运行此工具不会产生任何作用。
可使用如下命令来运行upgrade tool:
sqoop2-tool upgrade
升级成功会打印如下类似消息:
Tool class org.apache.sqoop.tools.tool.UpgradeTool has finished correctly.
升级失败会打印如下类似消息:
Tool class org.apache.sqoop.tools.tool.UpgradeTool has failed.
有关升级失败的详细信息,可参考Sqoop server log。
1.2.3. RepositoryDump
将用户创建的Sqoop存储库内容写入JSON格式的文件。其内容包括:连接(connections),作业(jobs)和提交(submissions)。
可使用如下命令来运行repositorydump tool:
sqoop2-tool repositorydump -o repository.json
此外,管理员也可以将敏感信息(例如:数据库连接密码)写入文件中:
sqoop2-tool repositorydump -o repository.json --include-sensitive
如果执行成功,您应该能看到如下类似消息:
Tool class org.apache.sqoop.tools.tool.RepositoryDumpTool has finished correctly.
如果存储库转存失败,则会看到如下类似消息:
Tool class org.apache.sqoop.tools.tool.RepositoryDumpTool has failed.
有关转存失败的详细信息,可查看Sqoop server log。
1.2.4. RepositoryLoad
读取JSON格式文件(RepositoryDump产生的文件)并将其加载到当前Sqoop repository中.
可使用如下命令来运行repositoryLoad tool:
sqoop2-tool repositoryload -i repository.json
如果执行成功,您应该能看到如下类似消息:
Tool class org.apache.sqoop.tools.tool.RepositoryLoadTool has finished correctly.
如果存储库加载失败,您可以看到如下类似消息:
Tool class org.apache.sqoop.tools.tool.RepositoryLoadTool has failed.
或异常信息.
有关存储库加载失败的详细信息,可查看Sqoop server log。
注意
如果创建的存储库转储不带密码(默认),则连接也不会包含密码,那么在这种情况下将无法执行作业。因此,在这种情况下,你必须手动更新连接并设置相应的密码。
注意
即使存储库中已存在相同的对象,RepositoryLoad工具还是会根据文件生成新连接,作业,提交。
1.2.5. RepositoryEncryption
有关存储库加密的更多详细信息,请参考Repository Encryption。
有时,我们需要更改数据的加密密码,为现有密码生成新密钥,加密现有的未加密存储库或解密现有加密存储库S. Sqoop 2提供了Repository Encryption 工具来完成这些目录。
在使用此工具之前,切记要先关闭Sqoop 2 server.
该工具所做的任何修改都发生与存储库相关的单个事务中,这样可防止存储库生产错误状态。
Repository Encryption工具相当简单,它使用的配置与上面提到的一样(useConf除外).
前缀为“-F”的配置表示现有存储库状态,前缀为“-T”的配置表示期望的存储库状态。
如果遗漏了其个配置,则意味着未加密。
1.2.5.1. 修改密码
要修改密码, 我们需用现有密码指定当前配置,并使用新密码来指定期望配置。
它看起来像如下内容:
sqoop.sh tool repositoryencryption \
-Forg.apache.sqoop.security.repo_encryption.password=old_password \
-Forg.apache.sqoop.security.repo_encryption.hmac_algorithm=HmacSHA256 \
-Forg.apache.sqoop.security.repo_encryption.cipher_algorithm=AES \
-Forg.apache.sqoop.security.repo_encryption.cipher_key_size=16 \
-Forg.apache.sqoop.security.repo_encryption.cipher_spec=AES/CBC/PKCS5Padding \
-Forg.apache.sqoop.security.repo_encryption.initialization_vector_size=16 \
-Forg.apache.sqoop.security.repo_encryption.pbkdf2_algorithm=PBKDF2WithHmacSHA1 \
-Forg.apache.sqoop.security.repo_encryption.pbkdf2_rounds=4000 \
-Torg.apache.sqoop.security.repo_encryption.password=new_password \
-Torg.apache.sqoop.security.repo_encryption.hmac_algorithm=HmacSHA256 \
-Torg.apache.sqoop.security.repo_encryption.cipher_algorithm=AES \
-Torg.apache.sqoop.security.repo_encryption.cipher_key_size=16 \
-Torg.apache.sqoop.security.repo_encryption.cipher_spec=AES/CBC/PKCS5Padding \
-Torg.apache.sqoop.security.repo_encryption.initialization_vector_size=16 \
-Torg.apache.sqoop.security.repo_encryption.pbkdf2_algorithm=PBKDF2WithHmacSHA1 \
-Torg.apache.sqoop.security.repo_encryption.pbkdf2_rounds=4000
1.2.5.2. 为现有密码生成新的密钥
与上面的场景类似,你可以像下面这样对相同配置拷贝两次:
sqoop.sh tool repositoryencryption \
-Forg.apache.sqoop.security.repo_encryption.password=password \
-Forg.apache.sqoop.security.repo_encryption.hmac_algorithm=HmacSHA256 \
-Forg.apache.sqoop.security.repo_encryption.cipher_algorithm=AES \
-Forg.apache.sqoop.security.repo_encryption.cipher_key_size=16 \
-Forg.apache.sqoop.security.repo_encryption.cipher_spec=AES/CBC/PKCS5Padding \
-Forg.apache.sqoop.security.repo_encryption.initialization_vector_size=16 \
-Forg.apache.sqoop.security.repo_encryption.pbkdf2_algorithm=PBKDF2WithHmacSHA1 \
-Forg.apache.sqoop.security.repo_encryption.pbkdf2_rounds=4000 \
-Torg.apache.sqoop.security.repo_encryption.password=password \
-Torg.apache.sqoop.security.repo_encryption.hmac_algorithm=HmacSHA256 \
-Torg.apache.sqoop.security.repo_encryption.cipher_algorithm=AES \
-Torg.apache.sqoop.security.repo_encryption.cipher_key_size=16 \
-Torg.apache.sqoop.security.repo_encryption.cipher_spec=AES/CBC/PKCS5Padding \
-Torg.apache.sqoop.security.repo_encryption.initialization_vector_size=16 \
-Torg.apache.sqoop.security.repo_encryption.pbkdf2_algorithm=PBKDF2WithHmacSHA1 \
-Torg.apache.sqoop.security.repo_encryption.pbkdf2_rounds=4000
当然,也可以走捷径:
sqoop.sh tool repositoryencryption -FuseConf -TuseConf
useConf 选项会读取现有sqoop配置属性文件中的所有配置,并将其应用于目标配置。
1.2.5.3. 加密现有的未加密存储库
sqoop.sh tool repositoryencryption \
-Torg.apache.sqoop.security.repo_encryption.password=password \
-Torg.apache.sqoop.security.repo_encryption.hmac_algorithm=HmacSHA256 \
-Torg.apache.sqoop.security.repo_encryption.cipher_algorithm=AES \
-Torg.apache.sqoop.security.repo_encryption.cipher_key_size=16 \
-Torg.apache.sqoop.security.repo_encryption.cipher_spec=AES/CBC/PKCS5Padding \
-Torg.apache.sqoop.security.repo_encryption.initialization_vector_size=16 \
-Torg.apache.sqoop.security.repo_encryption.pbkdf2_algorithm=PBKDF2WithHmacSHA1 \
-Torg.apache.sqoop.security.repo_encryption.pbkdf2_rounds=4000
如果已将加密存储库的配置写入sqoop属性文件,则可以执行以下操作:
sqoop.sh tool repositoryencryption -TuseConf
1.2.5.4. 解密现有的加密存储库
sqoop.sh tool repositoryencryption \
-Forg.apache.sqoop.security.repo_encryption.password=password \
-Forg.apache.sqoop.security.repo_encryption.hmac_algorithm=HmacSHA256 \
-Forg.apache.sqoop.security.repo_encryption.cipher_algorithm=AES \
-Forg.apache.sqoop.security.repo_encryption.cipher_key_size=16 \
-Forg.apache.sqoop.security.repo_encryption.cipher_spec=AES/CBC/PKCS5Padding \
-Forg.apache.sqoop.security.repo_encryption.initialization_vector_size=16 \
-Forg.apache.sqoop.security.repo_encryption.pbkdf2_algorithm=PBKDF2WithHmacSHA1 \
-Forg.apache.sqoop.security.repo_encryption.pbkdf2_rounds=4000
如果尚未从sqoop属性文件中删除加密存储库的配置,则可以执行以下操作:
sqoop.sh tool repositoryencryption -FuseConf
1.3. 升级
本节介绍了将Sqoop一个版本升级级另一个版本时所需的步骤 。
我们将分别介绍server和client组件的升级。
注意
从版本1.99.2升级开始,我们只涵盖从一个Sqoop 2版本到另一个版本的更新。
本手册不包含如何将Sqoop 1升级到Sqoop 2的相关信息。
1.3.1. 升级Server
由于Sqoop服务器使用数据库存储库来持久化sqoop实体(如连接器,驱动程序,链接和作业),因此可能需要在服务器升级过程中更新存储库模式。
此外,各种连接器和驱动程序对应配置和输入也可能随新服务器版本而发生变化,因此,除了升级存储库结构外,还需要升级数据。
有两种方法可以升级存储库中的Sqoop实体,您可以执行upgrade工具,或配置sqoop server在启动时执行所有必要的升级。
强烈建议在执行后续步骤之前,先备份存储。对于不同的存储库实现,其备份说明也略有不同。
例如,使用MySQL作为存储库就需要与Apache Derby不同的回退过程。 请遵循存储库的备份过程。
1.3.1.1. 使用upgrade tool来升级Server
首选升级步骤是显示运行Upgrade tool. 但在这之前,第一步需要先关闭 server,因为升级程序可能会破坏存储库中的数据:
sqoop2-server stop
当server成功停止后,你可以运行upgrade tool来升级:
sqoop2-tool upgrade
如果升级成功,你可以看到如下消息:
Tool class org.apache.sqoop.tools.tool.UpgradeTool has finished correctly.
如果失败,则可以查看Upgrade tool 文档页面。
1.3.1.2. 在启动时升级Server
server中自带升级功能,但为了阻止对存储库的意外修改,默认它是禁用的。
可通过停止server来启动存储库升级过程:
sqoop2-server stop
在再次启动server之前,您需要启用自动升级功能,该功能将在Sqoop Server启动期间执行所有必要的更改。
你需要在sqoop.properties中为存储库模式升级设置如下属性:
org.apache.sqoop.repository.schema.immutable=false
您需要在sqoop.properties中为连接器配置数据升级设置以下属性。
org.apache.sqoop.connector.autoupgrade=true
你需要在sqoop.properties中为驱动配置数据升级设置以下属性。org.apache.sqoop.driver.autoupgrade=true
设完所有属性后,可使用下面的命令来启动sqoop server:
sqoop2-server start
所有必需的操作都将在服务器引导期间自动执行。
一旦服务器成功启动并且升级完成,强烈建议将所有三个属性设回原始值。
1.3.2. 升级lient
客户端在升级期间不需要作任何操作,用最新的版本替换二进制文件就够了。
猜你喜欢
- 2024-09-08 JDBC数据库连接怎么操作?(jdbc连接数据库实例)
- 2024-09-08 mysql 5 & 8 JDBC的差别(mysql和jdbc的关系)
- 2024-09-08 肝!Spring JDBC持久化层框架“全家桶”教程
- 2024-09-08 0467-Hadoop SQL客户端工具之Dbeaver安装及使用
- 2024-09-08 离线端Pycharm中Database工具数据库驱动程序的安装
- 2024-09-08 JDBC数据库开发(一)(jdbc如何实现数据库访问)
- 2024-09-08 0312-如何在Kerberos环境下使用Spark2通过JDBC访问Impala
- 2024-09-08 Kafka连接器深度解读之JDBC源连接器
- 2024-09-08 JDBC、SQL注入攻击原理以及解决方案
- 2024-09-08 大数据开发基础之JAVA基础-JDBC基础知识
你 发表评论:
欢迎- 最近发表
-
- 数据不丢失 从Windows 11的DEV版降级到正式版
- Win11学院:在Windows11 25905预览版中如何启用Dev Drive
- DEVC++的卸载(devcon卸载驱动)
- win11 dev 开发版 升级攻略完整版
- 最新Windows11+Windows10系统各种版本永久激活密钥以及下载链接
- 想学Python,却还记不住语法?神仙书籍 python背记手册双手奉上
- 如何用Python语言开发大型服务器程序
- 30天Python 入门到精通(python零基础入门到精通)
- 入门扫盲:9本自学Python PDF书籍,让你避免踩坑,轻松变大神!
- 学好Python需要看的4本书推荐(学python好用的书)
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)