离线sqoop
sqoop hadoop hive flume
01- Sqoop–软件介绍
-
sqoop专门用来做RDBMS数据和Hadoop数据相互迁移的一个工具。
-
Apache Sqoop 是在 Hadoop 生态体系和 RDBMS 体系之间传送数据的一种工具。来自于 Apache 软件基金会提供。sqoop.apache.org
-
Sqoop 工作机制是将导入或导出命令翻译成 mapreduce 程序来实现。在翻译出的 mapreduce 中主要是对 inputformat 和 outputformat 进行定制。
Import:数据导入。RDBMS----->Hadoop
Export:数据导出。Hadoop---->RDBMS
02- Sqoop–安装部署
- 查看服务器内存
- free -h
- 查看磁盘大小
- df -h
- 1.3G 200M
- 清理缓存
- echo 1 >/proc/sys/vm/drop_caches
安装 sqoop 的前提是已经具备 java 和 hadoop 的环境。
最新稳定版: 1.4.6
配置文件修改:
cd $SQOOP_HOME/conf
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
export HADOOP_COMMON_HOME= /export/servers/hadoop-2.7.5
export HADOOP_MAPRED_HOME= /export/servers/hadoop-2.7.5
export HIVE_HOME= /export/servers/hive
//加入 mysql 的 jdbc 驱动包
cp /hive/lib/mysql-connector-java-5.1.32.jar $SQOOP_HOME/lib/
验证启动
bin/sqoop list-databases \
--connect jdbc:mysql://localhost:3306/ \
--username root --password hadoop
本命令会列出所有 mysql 的数据库。
到这里,整个 Sqoop 安装工作完成。shell
- 是一个单节点
- 不需要启动程序为一个守护进程。只需要使用时用sqoop脚本操作。
03- Sqoop–导入import–全量数据导入hdfs
- 下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。
bin/sqoop import \
--connect jdbc:mysql://node03:3306/userdb \
--username root \
--password 123456 \
--delete-target-dir \
--target-dir /aa \
--table emp --m 1
其中--target-dir可以用来指定导出数据存放至HDFS的目录;
-
可以看出它会在HDFS上默认用逗号,分隔emp表的数据和字段。可以通过
–fields-terminated-by '\t’来指定分隔符。
-
首先得把hdfs启动,还得启动yarn集群
-
sqoop任务使用的MapReduce运行的
-
–m 1 指定mapper的个数为1 _success