高可用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.
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. #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平台-实战尾声篇的更多相关文章
- 高可用Hadoop平台-答疑篇
1.概述 这篇博客不涉及到具体的编码,只是解答最近一些朋友心中的疑惑.最近,一些朋友和网友纷纷私密我,我总结了一下,疑问大致包含以下几点: 我学 Hadoop 后能从事什么岗位? 在遇到问题,我该如何 ...
- 高可用Hadoop平台-实战
1.概述 今天继续<高可用的Hadoop平台>系列,今天开始进行小规模的实战下,前面的准备工作完成后,基本用于统计数据的平台都拥有了,关于导出统计结果的文章留到后面赘述.今天要和大家分享的 ...
- 高可用Hadoop平台-Oozie工作流之Hadoop调度
1.概述 在<高可用Hadoop平台-Oozie工作流>一篇中,给大家分享了如何去单一的集成Oozie这样一个插件.今天为大家介绍如何去使用Oozie创建相关工作流运行与Hadoop上,已 ...
- 高可用Hadoop平台-Hue In Hadoop
1.概述 前面一篇博客<高可用Hadoop平台-Ganglia安装部署>,为大家介绍了Ganglia在Hadoop中的集成,今天为大家介绍另一款工具——Hue,该工具功能比较丰富,下面是今 ...
- 高可用Hadoop平台-集成Hive HAProxy
1.概述 这篇博客是接着<高可用Hadoop平台>系列讲,本篇博客是为后面用 Hive 来做数据统计做准备的,介绍如何在 Hadoop HA 平台下集成高可用的 Hive 工具,下面我打算 ...
- 高可用Hadoop平台-探索
1.概述 上篇<高可用Hadoop平台-启航>博客已经让我们初步了解了Hadoop平台:接下来,我们对Hadoop做进一步的探索,一步一步的揭开Hadoop的神秘面纱.下面,我们开始赘述今 ...
- 高可用Hadoop平台-启航
1.概述 在上篇博客中,我们搭建了<配置高可用Hadoop平台>,接下来我们就可以驾着Hadoop这艘巨轮在大数据的海洋中遨游了.工欲善其事,必先利其器.是的,没错:我们开发需要有开发工具 ...
- 高可用Hadoop平台-Flume NG实战图解篇
1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume N ...
- 高可用Hadoop平台-HBase集群搭建
1.概述 今天补充一篇HBase集群的搭建,这个是高可用系列遗漏的一篇博客,今天抽时间补上,今天给大家介绍的主要内容目录如下所示: 基础软件的准备 HBase介绍 HBase集群搭建 单点问题验证 截 ...
随机推荐
- Redis集群的主从切换研究
目录 目录 1 1. 前言 1 2. slave发起选举 2 3. master响应选举 5 4. 选举示例 5 5. 哈希槽传播方式 6 6. 一次主从切换记录1 6 6.1. 相关参数 6 6.2 ...
- Matlab用mpeaks函数求峰值点坐标
clear;clc;close all % 初始化 m = [-6,-2,0,2,4,6]; sigma = [1,1,0.5,0.25,0.6,2]; h = [1,2,3,2,2.13,3.14] ...
- leetcode - [1]Reverse Words in a String
Question: Reverse Words in a String Given an input string, reverse the string word by word. For exam ...
- _编程语言_C++_Lambda函数与表达式
C++11提供了对匿名函数的支持,称为Lambda表达式函数 Lambda 表达式把函数看作对象.Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值 ...
- (动态规划)免费馅饼--hdu--1176
http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- noip第13课作业
1. 排身高 [问题描述] 鹏鹏的班上一共有 n 个学生.刚好每个同学的身高互不相同.鹏鹏想知道,所有同学中身高第二高的是谁. 输入格式:输入共两行,第一行有一个整数 n(2≤n≤100),表示 ...
- kafka讲解
转载http://www.jasongj.com/2015/01/02/Kafka深度解析 Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,而Jafka是在Ka ...
- 异步多线程 Thread ThreadPool Task
一.线程 Thread ThreadPool 线程是Windows任务调度的最小单位,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针.程序计数器等),但代码区是共享的,即不同的线程可以 ...
- https://www.cnblogs.com/hnxxcxg/p/6085149.html
DELPHI微信支付代码 不管是微信支付还是支付宝支付, 3个最棘手的问题是:1,如何生成签名2,支付请求如何提交3, 如何验证签名 下面就围绕这二个问题来讲. 我使用的是XE3. 先看微信支付: ...
- cxgrid强大用法
cxgrid强大用法 (2012-07-25 14:09:42) 转载▼ 标签: delphi cxgrid 用法 强大 杂谈 分类: Delphi cxGrid功能强大,适合做企业级的复杂查询.非常 ...