博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高可用Hadoop平台-实战尾声篇
阅读量:6070 次
发布时间:2019-06-20

本文共 2700 字,大约阅读时间需要 9 分钟。

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.5export 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 availableexport HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.6.0#Set path to where hadoop-*-core.jar is availableexport 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 availableexport 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方面工作的人一点点帮助,大家在研究的过程当中若是有什么问题,可以加群讨论或是发送邮件给我,我会尽我所能为您解答,与君共勉!

 

联系方式: 
邮箱:smartloli.org@gmail.com 
Twitter:  
QQ群(Hadoop - 交流社区1):  
温馨提示:请大家加群的时候写上加群理由(姓名+公司/学校),方便管理员审核,谢谢! 

热爱生活,享受编程,与君共勉!

本文转自哥不是小萝莉博客园博客,原文链接:,如需转载请自行联系原作者

你可能感兴趣的文章
从零开始学 Web 之 CSS(五)可见性、内容移除、精灵图、属性选择器、滑动门...
查看>>
必应搜索昨日起出现大规模的无法访问
查看>>
手把手教你用Python库Keras做预测(附代码)
查看>>
亚信安全中标广州白云国际机场 全方位提升核心业务APT治理能力
查看>>
TypeScript 发布 3.4 首个 RC 预览版
查看>>
JetCache快速入门
查看>>
Android项目实战(五):TextView自适应大小
查看>>
Java学习笔记--内存划分 堆栈方法区
查看>>
网页一键加入QQ群
查看>>
武汉云服务:网站打不开的几种错误显示及解决方法
查看>>
面试中关于Java虚拟机(jvm)的问题看这篇就够了
查看>>
V3.3.1发布
查看>>
量子计算和心灵运输,什么是量子计算机?
查看>>
解锁高性能计算与区块链应用,阿里云Kubernetes服务召唤神龙
查看>>
HTTP Live Streaming直播(iOS直播)技术分析与实现
查看>>
Jenkins强制设置语言为中文
查看>>
Ubuntu 16.04安装MySQL(5.7.18)
查看>>
[直播活动]首次FPGA平台最有深度的一次直播讲解
查看>>
阿里云虚拟主机建立多个网站的方法
查看>>
除了人生与目标,扎克伯格演讲的背后还有这些“有趣”东西
查看>>