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.gz
ln -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-alpha
chown -R hadoop:hadoop /usr/local/sqoop

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

export SQOOP_HOME=/usr/local/sqoop
export 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/conf
cp sqoop-env-template.sh sqoop-env.sh

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

export HADOOP_COMMON_HOME=/usr/local/hadoop
export 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上的数据如下:

[[email protected] 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
[[email protected] lib]$ hdfs dfs -cat /test/loginInfo/userLoginInfo.txt
wanger,2017-07-27 14:21:12
zhangsan,2017-07-27 14:37:16
james,2017-07-27 15:27:13
...

(注:这里对/test/loginInfo下的文本内容进行了合并和重新存放,实际使用过程中该目录下会产生多个以part-**格式命名的文本,文本内容的格式是一致的)

数据已经成功抽取并以文本方式存放到hdfs上了。下面就可以编写mapreduce程序来对文本进行分析了。

时间: 2024-10-25 08:59:54

hadoop2.6.5+sqoop1.4.6环境部署与测试(三)的相关文章

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

情景描述: 用户的登录信息以记录的方式被存放在mysql(版本为5.1.73)的表中,现打算使用sqoop将登录记录抽取并存放到hdfs上,并使用mapreduce程序统计每个用户的登录次数. 环境描述:采用4台虚拟机部署hadoop2.6.5的完全分布式环境,在其中一台担任namenode节点的主机上安装mysql-server和sqoop,用于存放和抽取源数据.除此之外,使用一台另外的机器编写mapreduce程序和发布jar包,提供给hadoop使用.4台部署hadoop机器信息与集群中担

Linux 服务器 Java环境部署系列(三):安装git、maven

引言 本文主要介绍Linux服务器下搭建Java环境的相关操作:安装git.maven. 系列文档目录 Linux 服务器 Java环境部署系列(一):安装JDK Linux 服务器 Java环境部署系列(二):安装nginx.mysql.tomcat.redis Linux 服务器 Java环境部署系列(三):安装git.maven Linux 服务器 Java环境部署系列(四):搭建jenkins环境.部署项目 安装git 安装git,采用数据源的方式,并配置环境变量 安装步骤 查看源仓库g

Linux 环境部署记录(三) - Jenkins安装与配置

Jenkins安装 为了兼容生产环境的jdk1.7版本,从官网得知,Jenkins必须是1.6之前的版本,因此下载jenkins-1.596.3-1.1.noarch.rpm到本地进行安装: #移动到rpm包所在目录 rpm -ivh jenkins-1.596.3-1.1.noarch.rpm 安装后,修改Jenkins配置文件: vi /etc/sysconfig/jenkins 根据实际情况修改以下两处,通常tomcat已占用8080和8009端口:   记得在防火墙中开启对应端口,然后重

ubuntu 常用生产环境部署配置测试调优

1,ubuntu monogdb 安装配置 2,ubuntu jdk1.7,tomcat7安装 3,ubuntu LAMP部署 4,mongodb 远程热备份及恢复 使用自带的mongodump和mongorestore工具 mongodump -h dbhost -d dbname -o dbdirectory mongorestore -h dbhost -d dbname --directoryperdb dbdirectory 5,mongodb 开启auth 编辑/etc/mongod

LINUX测试环境部署mysql(三)

安装配置mysql 1.安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包: yum list mysql* 安装mysql客户端: yum install mysql 安装mysql 服务器端: yum install mysql-server yum install mysql-devel 2.启动&&停止 数据库字符集设置 mysql配置文件/etc/my.cnf中加入default-charac

Spring学习第1节 -- 环境部署、测试

下载Jar包 https://repo.spring.io/release/org/springframework/spring/ 创建一个Java项目 将jar包导入,我这里电脑性能足够所以免得以后还要导包,所以一次性把所有的的spring包都导入进来了. Spring 核心容器 从下图中可以看到spring核心容器中包含了spring-core spring-beans spring-context和sping-expression, 所以事实上只要把这4个包导入进来就可以了, 我学习的教程

LNMP环境部署及zabbix服务器端安装

一.LNMP环境部署 1.配置epel源 建议在系统安装完成之后就配置epel源,方便一些软件包的安装: wget http://mirrors.ustc.edu.cn/centos/6/extras/x86_64/Packages/epel-release-6-8.noarch.rpmrpm -ivhepel-release-6-8.noarch.rpm 2.nginx安装 (1)安装支持软件 Nginx.mysql.php的配置及运行需要pcre.zlib.openssl等软件包的支持,因此

Linux 服务器 Java环境部署系列(五):搭建RabbitMQ

引言 本文主要介绍Linux服务器下,搭建RabbitMQ,及相关配置. 系列文档目录 Linux 服务器 Java环境部署系列(一):安装JDK Linux 服务器 Java环境部署系列(二):安装nginx.mysql.tomcat.redis Linux 服务器 Java环境部署系列(三):安装git.maven Linux 服务器 Java环境部署系列(四):搭建jenkins环境.部署项目 Linux 服务器 Java环境部署系列(五):搭建RabbitMQ 准备工作 下载Erlang

Slurm任务调度系统部署和测试(1)

1. 概述1.1 节点信息2. 节点准备3. 部署NTP服务器4. 部署LDAP服务器5. 部署Munge认证服务6. 部署Mysql数据库服务6. 部署slurm6.1 slurm下载6.2 解压编译安装 1. 概述 slurm任务调度系统,主要应用在HPC集群资源管理和任务调度.具体信息参见slurm官方网站:https://slurm.schedmd.com/ 部署Slurm任务调度系统,需要部署NTP内网时间同步服务器,LDAP全局认证服务器,Mysql数据库服务器 本篇博客主要记录如何