1. 基础知识
Hadoop实现了一个特殊的计算模型,即MapReduce
MapReduce可以将计算任务分割成多个处理单元然后分散到一群家用的或服务器级别的硬件机器上,从而降低成本并提供水平可伸缩性
MapReduce模型下,是一个成为Hadoop分布式文件系统(HDFS)的分布式文件系统
Hive提供一个称为Hive查询语言(HiveQL或HQL)的SQL方言,用来查询Hadoop集群中的数据
Hive的缺陷:
- Hive不是一个完整的数据库,它不支持记录级别的更新、插入或者删除的操作
- Hive是一个面向批处理的系统,它的查询延时比较严重
- Hive不支持事务
Hive优势:它是最适合数据仓库应用程序的,其可以维护海量数据,而且可以对数据进行挖掘。然后形成意见和报告
1.1 Hadoop和MapReduce综述
MapReduce是一种计算模型。它可以将大型数据处理任务分解成很多单个的,可以在服务器集群中并行执行的任务。这些任务的计算结果,合并在一起可以用来计算最终结果。
MapReduce即:Map过程 + Reduce过程
Map过程:将集合中的元素从一种形式转换成另一种形式。
输入和输出的键必须完全不同,而输入和输出的值则可能完全不同
Reduce过程:将值的集合转换成一个值(例如对一组数值求和或求平均值),或转换成另一个集合
1.2 Hadoop生态系统中的Hive
不需要实时响应查询,不需要记录级别的插入、更新和删除
2. 基础操作
2.1 安装预先配置好的虚拟机
2.2 安装详细步骤
2.2.1 装Java(Linux)
需要工具:VMware workstation、Xftp
需要安装包:JDK(Java开发工具集)、64 位 CentOS 6.5 映像
安装指导:虚拟机安装机安装JDK以及Hadoop(保姆级教程)、VMware虚拟机安装Linux系统(详解版)
2.2.2 安装Hadoop
需要安装包:hadoop-2.7.2.tar.gz
安装指导:虚拟机安装机安装JDK以及Hadoop(保姆级教程)
Xftp上传文件错误时,用命令更改文件夹权限:chmod 777 文件夹名称(需要赋予权限的文件夹)
2.2.3 本地模式、伪分布模式和分布式模式
本地模式:使用的是本地文件系统,执行Hadoop job时,Map task和Reduce task在同一个进程中执行
分布式模式:真实的集群配置,所有没有完整URL指定的路径默认都是分布式文件系统(通常是HDFS)中的路径,由JobTracker服务来管理job,不同的task在不同的进程中进行
伪分布式模式:执行的行为和在分布式模式下的行为是一致的,引用的文件系统默认为分布式文件系统,由JobTracker服务来管理job,但实际上是一台物理机。
2.2.5 安装Hive
安装指导:大数据平台入门--hive安装(虚拟机安装单机版本)
2.3 Hive内部是什么?
Hive二进制分支版本核心包括3个部分:
- lib目录,java代码本身
- bin目录,Hive服务的各种可执行文件,CLI最常用,一般使用hive(小写)代表CLI
- conf目录,配置Hive的配置文件
2.4 启动Hive
cd $HIVE_HOME #到hive根目录
bin/hive #运行CLI命令
2.6 Hive命令
--service name 用来启用以下某个服务
--auxpath 用来指定一个以冒号分割的“附属的”Java包(JAR),这些文件中包含有用户可能需要的自定义扩展等
--config 文件目录 允许用户覆盖$HIVE_HOME/conf中默认的属性配置,而指向一个新的配置文件目录
2.7 命令行界面
2.7.1 CLI选项
$ hive --help --service cli
上面命令可以看到CLI所提供的选项列表
2.7.2 变量和属性
--define key=value和 --hivevar key=value,可以让用户在命令行定义用户自定义变量以便在Hive脚本中引用
这些自定义的变量键值对,会被放到hivevar命名空间,以区别于其他3种内置命名空间
使用SET命令显示或者修改变量值
不加-v标记,set命令会打印出hivevar,hiveconf,system和env中所有的变量
使用-v标记,则会打印出Hadoop中所有定义的所有属性
Set命令还可以用于给变量赋新的值
2.7.3 Hive中“一次使用”命令
使用-e命令,执行结束后CLI立即退出
$ hive -e “SQL语句”
使用-S选项可以开启静默模式,后面跟目录可以将结果保存到一个文件中
$ hive -S -e "SQL语句" > /tmp/myquery