开发者社区> smartloli> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

高可用Hadoop平台-实战尾声篇

简介:
+关注继续查看

1.概述

  今天这篇博客就是《高可用Hadoop平台》的尾声篇了,从搭建安装到入门运行 Hadoop 版的 HelloWorld(WordCount 可以称的上是 Hadoop 版的 HelloWorld ),在到开发中需要用到的各个套件以及对套件的安装使用,在到 Hadoop 的实战,一路走来我们对在Hadoop平台下开发的基本流程应该都熟悉了。今天我们来完成在高可用Hadoop平台开发的最后一步,导出数据。

2.导出数据目的

  首先,我来说明下为什么要导出数据,导出数据的目的是为了干嘛?

  我们都知道,我们当初统计这些数据的目标,就是为了来可视化这些数据结果;虽然结果我们是统计出来储存在 HDFS 上,但是,前段同学需要拿到这些数据,直接操作 HDFS 读取统计结果,这样的做法是不明智的,撇开安全性不说,时延就是一个很大的问题。所以,这里我们需要有一个步骤去完成数据的导出,将数据导出到 Mysql 之类的关系型数据库。这里我们用到的导出套件是Sqoop。

3.Sqoop

3.1安装包

  sqoop 下载地址

3.2配置

  打开配置环境文件:



sudo vi /etc/profile

  编辑 Sqoop 的环境,内容如下所示:

export SQOOP_HOME=/home/hadoop/sqoop-1.4.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZK_HOME/bin:$HIVE_HOME/bin:$SQOOP_HOME/bin

3.3sqoop-env.sh

  变动内容如下:

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.6.0

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.6.0

#set the path to where bin/hbase is available
#export HBASE_HOME=

#Set the path to where bin/hive is available
export HIVE_HOME=/home/hadoop/hive-0.14.0

#Set the path for where zookeper config dir is
#export ZOOCFGDIR=

  注:这里使用 Sqoop 自带的 ZooKeeper ,另外由于没有使用到 HBase ,故这里未配置 HBase 的路径指向。

3.4异常

  Streaming result set com.mysql.jdbc.RowDataDynamic@12e9d40f is still active

  执行sqoop脚本时,出现这个异常是因为mysql的驱动的原因,使用最新的mysql驱动包。

  解决方案:



wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz

  然后解压到sqoop目录的lib目录下,重新执行脚本正常。

  至此,sqoop的安装配置以及使用到此完成。

4.导出流程

  流程图如下所示:

  将hive数据库的TBLS表导入到hdfs,命令内容如下:

sqoop import 
--connect jdbc:mysql://10.211.55.26:3306/hive  
--username root 
--password root 
--table TBLS 
--fields-terminated-by '\t'

  这里 JDBC 的链接地址指向 Mysql 库的链接地址。

  注:--fields-terminated-by '\t' 以tab分割

  --null-string '**'  将null用**替代(--是sqoop保留字符,不能使用)

  -m 1  指定一个map任务

 

  将hdfs上的文件导入到mysql数据库:

sqoop export 
-D sqoop.export.records.per.statement=100 
--connect jdbc:mysql://10.211.55.26:3306/sqoop  
--username root 
--password root 
--table portal 
--fields-terminated-by ',' 
--export-dir "/home/hive/warehouse/logdfs_${yesterday}" 
--batch --update-key date,appkey 
--update-mode allowinsert;

  接下来,在我们导出数据成功后,我们可以将临时使用 hive 统计的结果表删除,若资源充足,我们可以保留最近 7 天的统计结果。

  删除脚本命令如下所示:



hive -e "drop table pv_${yesterday};drop table reguser_${yesterday};drop table ip_${yesterday};drop table jumper_${yesterday};drop table logdfs_${yesterday};"

5.总结

  在导出的时候,我们需要注意导出字段的分隔符,导出到目的地表名是否存在,书写导出命令是否正确。在导出异常时,根据具体的异常信息做相应的处理。

6.结束语

  《高可用Hadoop平台》系列就和大家分享到这里,这一系列文章给对Hadoop方面感兴趣,以及打算从事Hadoop方面工作的人一点点帮助,大家在研究的过程当中若是有什么问题,可以加群讨论或是发送邮件给我,我会尽我所能为您解答,与君共勉!

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Hadoop海量数据处理:技术详解与项目实战》一导读
2013年被称为“大数据元年”,标志着世界正式进入了大数据时代,而就在这一年,我加入了清华大学苏州汽车研究院大数据处理中心,从事Hadoop的开发、运维和数据挖掘等方面的工作。从出现之日起,Hadoop就深刻地改变了人们处理数据的方式。
1516 0
腾讯大规模Hadoop集群实践
腾讯大规模Hadoop集群实践 转自:http://www.csdn.net/article/2014-02-19/2818473-Tencent-Hadoop ID lishilong404740787 TDW是腾讯最大的离线数据处理平台。
1562 0
+关注
smartloli
笔名:哥不是小萝莉 博客园地址:http://www.cnblogs.com/smartloli/
文章
问答
文章排行榜
最热
最新
相关电子书
更多
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili
立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop
立即下载
海量结构化和非结构化大数据Hadoop集群规划
立即下载