Hive数据类型与文本文件数据格式
Hive支持关系型数据库的绝大多数基本数据类型,同时也支持4种集合数据类型。
基本数据类型
Hive类似和java语言中一样,会支持多种不同长度的整型和浮点类型数据,同时也支持布尔类型、字符串类型,时间戳数据类型以及二进制数组数据类型等。具体的如下表:
大类
类型
Integers(整型)
TINYINT – 1字节的有符号整数 SMALLINT – 2字节的有符号整数 INT – 4字节的有符号整数 BIGINT – 8字节的有符号整数
Floating point numbers(浮点数)
FLOAT – 单精度浮点数 DOUBLE – 双精度浮点数
Fixed ...
Hive配置与命令
hive-site.xml配置
可在 hive-site.xml 中增加以下常用配置,方便使用。
数据存储位置
123456<!-- 数据默认的存储位置(HDFS) --><property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> ...
Hive安装
Hive官网:http://hive.apache.org
下载网址:http://archive.apache.org/dist/hive/
文档网址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual
备注:Hive的元数据默认存储在自带的 derby 数据库中,生产中多采用MySQL;derby:java语言开发占用资源少,单进程,单用户。仅仅适用于个人的测试。
MySQL安装
Hive中使用MySQL存储元数据,MySQL的版本 5.7.26。
环境准备(删除有冲突的依赖包、安装必须的依赖包)
删除 ...
Hive概述
数据仓库工具Hive
数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,主要用于管理决策。(数据仓库之父比尔·恩门,1991年提出)。
数据仓库的目的:构建面向分析的、集成的数据集合;为企业提供决策支持。
数据仓库本身不产生数据,数据来源于外部。
存储了大量数据,对这些数据的分析和处理不可避免的用到Hive。
Hive产生背景
使用MapReduce处理大数据,将面临以下问题:
MapReduce 开发难度大,学习成本高(wordCount => Hello World)。
Hdfs文件没有字段名、没有数据类 ...
Hadoop二次开发环境搭建
系统环境要求
1234567系统: CentOS-7_x86_64 protobuf: protoc-2.5.0maven: maven-3.6.0hadoop: hadoop-2.9.2java: jdk1.8.0_131cmake: cmake-2.8.12.2OpenSSL: OpenSSL 1.0.2k-fipsfindbugs: findbugs-1.3.9
准备工作
12# 安装编译需要的依赖库$ yum install -y lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel cmake gcc g ...
Namenode-Full-GC
JVM堆内存
JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)。
年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组成。Eden区占大容量,Survivor两个区占小容量,默认比例是8:1:1。
堆内存用途:存放的是对象,垃圾收集器就是收集这些对象,然后根据GC算法回收。
非堆内存用途:永久代,也称为方法区,存储程序运行时长期存活的对象,比如类的元数据、方法、常量、属性等。
补充 ...
Yarn调优
NM配置
可用内存
刨除分配给操作系统、其他服务的内存外,剩余的资源应尽量分配给YARN。
1yarn.nodemanager.resource.memory-mb 默认是8192
CPU虚拟核数
建议将此配置设定在逻辑核数的1.5~2倍之间。如果CPU的计算能力要求不高,可以配置为2倍的逻辑CPU。
12yarn.nodemanager.resource.cpu-vcores该节点上YARN可使用的虚拟CPU个数,默认是8。 目前推荐将该值设值为逻辑CPU核数的1.5~2倍之间
默认情况下,Map或Reduce container会使用1个虚拟CPU内核和1024MB内存,Ap ...
MR调优
Job执行三原则
充分利用集群资源
Job运行时,尽量让所有的节点都有任务处理,这样能尽量保证集群资源被充分利用,任务的并发度达到最大。可以通过调整处理的数据量大小,以及调整map和reduce个数来实现。
Reduce个数的控制使用“mapreduce.job.reduces”
Map个数取决于使用了哪种InputFormat,默认的TextFileInputFormat将根据block的个数来分配map数(一个block一个map)。
reduce阶段尽量放在一轮
努力避免出现以下场景
观察Job如果大多数ReduceTask在第一轮运行完后,剩下很少甚至一个ReduceT ...
Hadoop3.x新特性概述
Hadoop3.x中增强了很多特性,在Hadoop3.x中,不再允许使用jdk1.7,要求jdk1.8以上版本。这是因为Hadoop 2.0是基于JDK 1.7开发的,而JDK 1.7在2015年4月已停止更新,这直接迫使Hadoop社区基于JDK 1.8重新发布一个新的Hadoop版本,而这正是Hadoop3.x。
Hadoop3.x以后将会调整方案架构,将Mapreduce基于内存+io+磁盘,共同处理数据。
Hadoop3.x中引入了一些重要的功能和优化,包括HDFS可擦除编码、多Namenode支持、MR Native Task优化、YARN基于cgroup的内存和磁盘IO隔离、YAR ...
Apache-Hadoop核心源码剖析
源码阅读准备
下载Apache Hadoop-2.9.2官方源码
将源码导入idea中
等待下载和解决依赖完成,源码导入成功!
NameNode启动流程
启动Hdfs集群命令start-dfs.sh。
该命令会启动Hdfs的NameNode以及DataNode,启动NameNode主要是通过org.apache.hadoop.hdfs.server.namenode.NameNode类。
我们重点关注NameNode在启动过程中做了哪些工作(偏离主线的技术细节不深究)。
对于分析启动流程主要关注两部分代码静态代码块和main方法
静态代码块
...