千家信息网

hadoop2.6.5+sqoop1.4.6环境部署与测试(三)

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,在hadoop环境搭建完成后,接下来就是要把sqoop整合进来,使其可以利用hadoop和mysql-connector-java来从MySQL中抽取数据并转存到hdfs上。1. 将得到的sqoop-
千家信息网最后更新 2026年11月03日hadoop2.6.5+sqoop1.4.6环境部署与测试(三)

在hadoop环境搭建完成后,接下来就是要把sqoop整合进来,使其可以利用hadoop和mysql-connector-java来从MySQL中抽取数据并转存到hdfs上。

1. 将得到的sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz解压到/usr/local/下,并建立/usr/local/sqoop软链接。

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz /usr/local/tar -xvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gzln -s /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha /usr/local/sqoop

2. 将/usr/local/sqoop,/usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha属主属组修改为hadoop,保证hadoop用户可以使用:

chown -R hadoop:hadoop /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alphachown -R hadoop:hadoop /usr/local/sqoop

3. 配置SQOOP_HOME环境变量,在/etc/profile中添加和修改如下记录:

export SQOOP_HOME=/usr/local/sqoopexport PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SQOOP_HOME/bin:$PATH

4. 对sqoop进行配置,保证其可以整合到hadoop中:
1)进入到$SQOOP_HOME/conf目录下,复制一份sqoop环境配置脚本sqoop-env-template.sh到当前目录,并重命名为sqoop-env.sh:

cd $SQOOP_HOME/confcp sqoop-env-template.sh sqoop-env.sh

2)修改sqoop-env.sh的HADOOP_COMMON_HOME和HADOOP_MAPRED_HOME变量值,使其对应于相应的hadoop文件路径:

export HADOOP_COMMON_HOME=/usr/local/hadoopexport HADOOP_MAPRED_HOME=/usr/local/hadoop/share/hadoop/mapreduce

3)sqoop需要连接mysql和运行mapreduce程序来完成数据抽取,因此需要mysql-connector和mapreduce相应库文件的支持,请将mysql-connector-java包和$HADOOP_HOME/share/hadoop/mapreduce/下的所有jar包复制到$SQOOP_HOME/lib目录下:

cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar $SQOOP_HOME/lib/cp ~/mysql-connector-java-5.1.32-bin.jar $SQOOP_HOME/lib/chown -R hadoop:hadoop $SQOOP_HOME/lib/

5. 下面可以使用sqoop脚本来进行数据抽取操作了,该脚本在$SQOOP_HOME/bin目录下,使用方法如下:

#测试数据库是否可以连接sqoop list-databases --connect jdbc:mysql://localhost:3306/actionLog \--username root --P (如果返回数据库名,则可以通过sqoop连接mysql数据库)
#从MySQL库中抽取数据到hdfs上sqoop import --connect jdbc:mysql://hadoop-test-nn:3306/actionLog  \--username root -P \--table log \--columns "logger_id,time" \--where 'action = "login"' \--target-dir /test/loginInfo选项说明:--username 数据库用户名-P 使用交互方式隐蔽和输入数据库用户口令--table 指定导出的库表名--columns 指定表中哪些列的数据被导出--where 可以通过添加类似sql语句中where条件来筛选导出的记录--target-dir 导出的数据存放在hdfs上的路径,这里的路径值是hdfs上的路径,并不是文件系统本身的绝对路径

上述sqoop import命令是对mysql上actionLog库中的log表进行数据抽取,该表的表结构如下:

mysql> desc log;+--------------+--------------+------+-----+---------+----------------+| Field        | Type         | Null | Key | Default | Extra          |+--------------+--------------+------+-----+---------+----------------+| log_id       | bigint(20)   | NO   | PRI | NULL    | auto_increment || name          | varchar(255) | YES  |     | NULL    |                || action       | varchar(255) | YES  |     | NULL    |                || logger_id    | varchar(255) | YES  |     | NULL    |                || time         | varchar(255) | YES  |     | NULL    |                |+--------------+--------------+------+-----+---------+----------------+

因为指定了导出列为logger_id、time。因此导出到hdfs上的数据如下:

[hadoop@hadoop-test-nn lib]$ hdfs dfs -ls /test/loginInfo   Found 1 items-rw-r--r--   2 hadoop supergroup     211825 2017-08-02 16:04 /test/loginInfo/userLoginInfo.txt[hadoop@hadoop-test-nn lib]$ hdfs dfs -cat /test/loginInfo/userLoginInfo.txtwanger,2017-07-27 14:21:12zhangsan,2017-07-27 14:37:16james,2017-07-27 15:27:13...

(注:这里对/test/loginInfo下的文本内容进行了合并和重新存放,实际使用过程中该目录下会产生多个以part-**格式命名的文本,文本内容的格式是一致的)
现在数据已经成功抽取并以文本方式存放到hdfs上了。下面就可以编写mapreduce程序来对文本进行分析了。

数据 抽取 数据库 文本 目录 路径 环境 用户 脚本 配置 内容 可以通过 文件 方式 格式 程序 保证 整合 测试 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是不是新科技 为想互联网科技 科技创新互联网企业 广州善班互联网科技 互联网科技视频素材 镁科技互联网资讯平台 开启互联网科技时代小说 天速互联网络科技有限公司 济南华为互联网科技产业总部基地 重庆互联网医院沙龙医盟信息科技 成都互联网科技公司工作好不好 卓翼科技产业互联网合作 区块链结合互联网科技 互联网方面的科技前沿 互联网金融科技公司的优势 互联网营销推广黑科技 互联网领先科技宣传片 上海创道互联网络科技有限公司 兰石爱特工业互联网科技分公司 杭州科技互联网公司有哪些 互联网科技官网 互联网科技卖菜 深圳期待互联网科技 互联网科技视频素材 科技互联网大厂 中国航天科技大学国际工业互联网 中国互联网公司排名锤子科技 区块链结合互联网科技 2021世界互联网领先科技成果发布 福州德业互联网科技
0