热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqoop2的shell下的使用及其详解(sqoop-1.99.7)

前提是安装好sqoop!!1.服务端如图,我们可以使用sqoop2-server[start|stop]来启动和关闭服务端。之后使用jps命令可以查看到会多了这个进程。在启动服务

前提是安装好sqoop!!

1.服务端

如图,我们可以使用 sqoop2-server [ start | stop ] 来启动和关闭服务端。之后使用 jps 命令可以查看到 
这里写图片描述 
会多了这个进程。

在启动服务成功后,会在自动生成两个文件(如果没有文件),(默认的是BASEDIR 和LOGDIR),

前者存放创建的link和job,,后者存放日志文件,

如果采用默认的,当你换个路径启动服务,link和job会找不到,即使你回到原来的路径启动也找到了,所有建议采用绝对路径,配置文件路径:$SQOOP_HOME/conf/sqoop.properties

附上全局替换命令:(把@LOGDIR@ 换成 /user/hadoop/sqoop-1.99.7/logs)

# 设置日志文件的目录
0,%s/@LOGDIR@/\/usr\/hadoop\/sqoop-1.99.7\/logs/g
# 设置数据的存放目录
0,%s/@BASEDIR@/\/usr\/hadoop\/sqoop-1.99.7\/bin\/BASEDIR/g


使用sqoop前请确保hadoop服务和Sqoop2服务器均已启动。其中Hadoop不仅要启动hdfs(NameNode、DataNode),还要启动yarn(NodeManager、ResourceManager),当然,一般还会有一个SecondaryNameNode,用于原始NameNode的备援进程。


2.客户端

服务启动后, 使用命名进入:  sqoop2-shell 

若成功会开启sqoop的shell命令行提示符:sqoop:000>

我们在使用的过程中可能会遇到错误,使用以下命令来使错误信息显示出来(每次进来都要设置才起作用)

set option --n[ame] verbose --v[alue] true


连接Sqoop服务端:

#我们的服务端安装在master这个节点上所以--host是master(每次进来都要设置才起作用)
set server --h[ost] master 
(set server --h[ost] master --p[ort] 12000 --w[ebapp] sqoop)
或者:  set server -u[rl] http://master:12000/sqoop


使用命令查看刚刚设置的信息:

show version --a[ll] 


可以使用help查看帮助文档,虽然不太详细,比较蠢,试一试命令就知道怎么用了

MySQL链接使用的是JDBC,这样想来不难理解,必须有对应的驱动文件jar,还得有对应的访问权限,请确保能在server端访问MySQL。

可以先看看connector模板都有哪些:    show connector  

这时候会显示各个conector信息, 在1.99.7版本以前,每个connector会有一个id ,当创建link时,用这个id指定所继承的connector,但在这个版本中没有这个id了,创建link时直接使用connector名称创建,这里我们使用的是generic-jdbc-connector(一般数据库都可以用这个):


2.1创建mysql链接

create link -c[onnector] generic-jdbc-connector  

这时候就会出现交互会话,提示你输入各项参数:
Name: mysql-link      标示这个link的字符串,就是一个名字,但是不能重复

Driver Class:指定jdbc启动时所需要加载的driver类,这个类实现了Java.sql.Driver接口。对本文来说,这个值是com.mysql.jdbc.Driver。

Connection String:本例为jdbc:mysql://master:3306/hive,   #注意:jdbc:mysql://主机名(ip):端口/数据库名
Username:链接数据库的用户名,也就是mysql客户端传入的-u参数。本例是hive。

Password:链接数据库的用户密码。(注:在使用update命令时,这里默认是没有的,其他参数都会保存原来输过的值)

FetchSize:直接回车了,使用的默认值,不是很清楚这个值,请知道的大牛告知,按字面意思就是获取一次资源时的大小。

填写完上面几项,将提供一个可以输入JDBC属性的hash,提示符是entry#,这时候可以手动指定很多JDBC属性的值。本例只覆盖了一个protocol值为tcp:protocol=tcp

再按回车,之后会再定义一下SQL方言。也就是说,各个数据库系统提供商们对SQL语言标准的理解和实现各有不同,于是各有各的一些细微差别。以下属性就是用于指定这些区别的。 官方文档上并没有说明这些属性如何填写,连提都没提(官网有时还是挺坑的)。

Identifier enclose:指定SQL中标识符的定界符,也就是说,有的SQL标示符是一个引号:select * from "table_name", 在写mysql的sql语句中会加上双引号,这种定界符在MySQL中是会报错的,。这个属性默认值就是双引号,所以不能直接回车使用默认值,必须将之覆盖,我使用空格覆盖了这个值。 

至此,就可以完成这个link的创建。命令行提示符也会还原为sqoop:000>。使用以下命令查看是否创建成功:

 show link  ,  后面也可以加参数,-n或者-a之类的
 

2.2创建HDFS链接

create link -c  hdfs-connector  

Name: hdfs-link    与mysql的一样,是个名字但不重复

HDFS URI:  hdfs://master:9000/  这个url是hadoop中配置hdfs-site.xml中的属性fs.defaultFS的值(老版的hadoop是fs.default.name,如果没找到就使用webUI  (http://主机名(ip):8088/conf)  去配置中心看)。
Hadoop conf directory:/mysoftware/hadoop-2.7.1/etc/hadoop   #Hadoop配置文件的目录


回车后没有什么错误就会显示successful信息。



2.3 创建一个job

  create job -f "mysql-link" -t "hdfs-link"  

-f指定from,即是数据源位置,-t指定to,即是目的地位置。本例是从MySQL传递数据到HDFS,所以就是from mysql to HDFS。参数值就是在创建链接(link)时指定的Name。名字在上面取好了,知道为啥名字不能重复了吧


Name: mysql_hdfs_job #Name必须唯一

Schema name: hive                     #必填,数据库名称
Table name: DBS                   #必填,表名
#以下几个配置我也是直接回车,使用默认值,从名字上能看出个大概的值
Table SQL statement:                   #可选
Table column names:    #可选
Partition column name:         #可选
Null value allowed for the partition column:      #可选
Boundary query:                        #可选

 
Check column:                         #可选
Last value:                          #可选
 
Override null value:                    #可选
Null value: 
Output format:                    #输出文件格式
 0 : TEXT_FILE  

..........

Choose: 0                           #必选 
Compression format: #用于指定使用什么压缩算法进行导出数据文件压缩,我指定NONE,这个也可以使用自定义的压缩算法CUSTOM,用Java实现相应的接口

0 : NONE
  ..........
Choose: 0                               #必选  这个就是指定的custom压缩算法
 
Output directory: /mysqoop  # 指定存储在HDFS文件系统中的路径,这里最好指定一个存在的路径,或者存在但路径下是空的,貌似这样才能成功。
Append mode: #是否追加文件,不懂的是,要求文件夹是空,连文件都没有何来追加!


#下面两个数量怎么取值,还不是很情况,请大牛告知
Extractors: 2                            #可选,对应mapreduce的job中的map的数量    
Loaders: 1                              #可选,对应mapreduce的job中的reduce的数量


最后再次出现element#提示符,用于输入extra mapper jars的属性,可以什么都不写。直接回车。


至此若出现successful则证明已经成功创建。


2.4 运行job 

    start job -n mysql_hdfs_job  -s  (名字上的引号要不要都无所谓)

  -s 参数可以看到运行的状态,

 也可以用  status job -n mysql_hdfs_job  查看或者使用webUI查看  (http://主机名(ip):8088/cluster/apps),也能看日志


如果失败,优先看sqoop shell中有没有报错,再者看日志,可以在webUI中和sqoop的日志文件看,前面有提及,如果日志中没有明显的报错,一般是你设置某个参数时不正确,或者是(hadoop)配置文件有问题,

报错时的推荐参数:

在Hadoop的yarn-site.xml 这个配置文件中设置以下属性
  
  yarn.log-aggregation-enable  
  true  



在mapred-site.xml中设置:(默认200)

  mapred.child.java.opts
  -Xmx1024m



参考文章:

http://www.cnblogs.com/avivaye/p/6196485.html

http://www.cnblogs.com/avivaye/p/6197123.html

http://blog.csdn.net/M_SIGNALs/article/details/53189424

http://blog.csdn.net/u012842205/article/details/52346595

http://blog.csdn.net/u014729236/article/details/46876651

还有很多地方不太懂,求知道的大牛,不吝赐教!共勉!




推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了在Python中使用zlib模块进行字符串的压缩与解压缩的方法,并探讨了其在内存优化方面的应用。通过压缩存储URL等长字符串,可以大大降低内存消耗,虽然处理时间会增加,但是整体效果显著。同时,给出了参考链接,供进一步学习和应用。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
author-avatar
OkzYa-_916
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有