Hive中的优化策略
Hive优化核心思想
把 Hive SQL 当做 MapReduce 程序去优化。
注:以下 SQL 不会转为 MapReduce 来执行:
select 仅查询本表字段
where 仅对本表字段做条件过滤
几种常用的优化策略
1、Explain 显示执行计划
在 sql 前添加关键字 explain,不会产生 MapReduce 任务,但会预先分析,程序大概需要执行的步骤。
例如:对表 person 进行统计
explain select count(*) from person;
从表中我们可以看出,执行这个语句程序大概要运行的步骤。
2、Hive 运行方式
Hive 默认的运行方式为集群模式,当使用集群模式的时候程序会把任务提交到服务器去运行。
举例:对表 cell_monitor 进行统计查询操作
select count(*) from cell_monitor;
从图中可以看出,MR任务被提交到服务器运行,时间为101秒,少量数据就提交到服务器,会严重消耗工作时间和增加服务器压力。
本地模式
开启本地模式
set hive.exec.mode.loca ...
Hadoop之数据仓库Hive
Hive 及数据仓库简介
基本概念
Hive 是基于 Hadoop 的一个【数据仓库工具】,可以将结构化的数据文件映射为一张 hive 数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。
【数据仓库】英文名称为 Data Warehouse,可简写为DW或 DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
**Hive 的表其实就是HDFS的目录/文件夹,hive表中的数据 就是hdfs目录中的文件,并按表名把文件夹分开。**如果是分区表,则分区值是子文件夹,可以直接在M/R job里使用这些数据。
Hive 的优缺点
**优点:**使用SQL来快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,学习成本低,十分适合数据仓库的统计分析。
**缺点:**只适合离线的数据处理,不支持实时查询。
Hive与HBase的关系与区别
关系:
...
深入Zookeeper
什么是 Zookeeper
Zookeeper 简介
ZooKeeper 是一个开源的、分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。
它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
**ZooKeeper:**提供通用的分布式锁服务,用以协调分布式应用。
**Keepalived:**监控节点不好管理,采用优先级监控。但是没有协同工作;功能单一;可扩展性差。
Zookeeper 的角色
领导者(leader),负责进行投票的发起和决议,更新系统状态。
学习者(learner),包括跟随者(follower)和观察者(observer), follower 用于接受客户端请求并想客户端返回结果,在选主过程中参与投票。
**Observer **可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步 leader 的状态,observer 的目的是为了扩展系统,提高读取速度。
Zookeeper 需保证高可用和强一致性 ...
分布式计算框架MapReduce
MapReduce 是什么
1. 概念
MapReduce 是一种分布式的离线计算框架,是一种编程模型,用于大规模数据集(大于1TB)的并行运算。将自己的程序运行在分布式系统上。
**概念是:"Map(映射)“和"Reduce(归约)”。**指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
2. 应用场景
可应用于大规模的算法图形处理、文字处理。
MapReduce 的设计理念
1. 分布式计算
分布式计算将该应用分解成许多小的部分,分配给多台计算机节点进行处理。这样可以节约整体计算时间,大大提高计算效率。
2. 移动计算,而不是移动数据
移动计算是随着移动通信、互联网、数据库、分布式计算等技术的发展而兴起的新技术。移动计算它的作用是将有用、准确、及时的信息提供给任何时间、任何地点的任何客户(这里我们说的是将计算程序应用移动到具有数据的集群计算机节点之上进行计算操作,也就是:计算向数据靠拢)。
MapReduce 计算框架的组成
Mapper(分)
Map- ...
Hadoop2.X
Hadoop 2.0 产生背景
根本原因:Hadoop 1.0 中 HDFS 和 MapReduce 在高可用、扩展性等方面存在问题。
1. HDFS 存在的问题
NameNode 单点故障,难以应用于在线场景。
NameNode 压力过大,且内存受限,影响系统扩展性
2. MapReduce 存在的问题
JobTracker 访问压力大,影响系统扩展性。
难以支持除 MapReduce 之外的计算框架,比如 Spark、Storm 等。
Hadoop 2.X
1. 系统架构
Hadoop 2.x 由 HDFS、MapReduce 和 YARN 三个分支构:
HDFS:分布式文件存储系统
YARN:资源管理系统
MapReduce:运行在YARN上的MR
2. 解决的问题
解决单点故障问题
HDFS HA:通过主备 NameNode 解决,如果主 NameNode 发生故障,则切换到备 NameNode 上。
解决内存受限问题
HDFS Federation(联邦机制)、HA
3. 新的变化
2.x 支持2个 NN 节点的 HA,3.0实现了 NN 一 ...
分布式文件存储系统HDFS
Hadoop 分布式简介
1. Hadoop 是分布式的系统架构,是Apache基金会顶级金牌项目
注:在Apache中,凡是域名以某个项目名字作为开头的,都是Apache基金会中的顶级金牌项目。
2. Hadoop 的思想之源
来自于Google 03年发布3大论文, GFS、mapreduce、 Bigtable ;Dougcutting用Java实现)。
3. Hadoop 创始人
Hadoop作者Doug cutting,就职Yahoo期间开发了Hadoop项目,目前在Cloudera 公司从事架构工作。
2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutch
Hadoop 于 2005 年秋天作为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。
2006 年 3 月份,Map-Reduce分布式离线计算 和 Nutch Distributed File System (NDFS) nutch分布式文件系统分 ...
Shell脚本编程
Shell 脚本是一种动态语言,编程跟 python、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Shell简介
Shell 首先是 UNIX/Linux 下的脚本编程语言,它是解释执行的,无需提前编译。
Shell 同时也是一个程序,它的一端连接着 UNIX/Linux 内核,另一端连接着用户和其它应用程序;换句话说,Shell 是用户和应用程序与内核沟通的桥梁。
Shell 脚本功能非常强大,完全能够胜任 Linux 的日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件等。
shell分类
Linux 的 Shell 种类众多,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
我们关注的是 Bash,也就是 Bour ...
Linux常用操作整理
Linux 是一个自由的,免费的,源码开放的操作系统。也是开源软件中最著名的例子。其最主要的目的就是为了建立不受任何商品化软件版权制约的,全世界都能使用的类 Unix 兼容产品。而我们将服务器部署在 Linux 将会更加的稳定、安全、高效以及出色的性能这是 Windows 无法比的。
Linux 系统简介
Linux 作者
纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds, 1969年~ ),著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。托瓦兹利用个人时间及器材创造出了这套当今全球最流行的操作系统(作业系统)内核之一。现受聘于开放源代码开发实验室(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。
Linux 发行版
发行版是基于 Linux 内核的一个操作系统。它带有用户可以使用的软件集合。更多的,它还包含系统管理包。
目前有许多 Linux 发行版。一些有名的版本如: CentOS、Ubuntu、 Redhat等是几个非常受欢迎的 Linux 发行版。
Linux 特点
开放性,多用户 ...