
2021SC@SDUSC
目录hive要运行在hadoop上,那么使用hive的必要前提就是安装hadoop了。
Linux虚拟机Linux选择了CentOS-7,有阿里云的镜像
我们设法搞一个VMware,用文件安装即可。过程中要设置root用户密码和个人用户。
这两样工具用于远程访问和文件传输,算是个额外的工具。
在本机上下载好linux版本的jdk包
网址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
选择jdk-8u202-linux-x64.tar.gz(java8天下无敌)
然后用Xftp传到linux虚拟机上,解压
之后我们需要配置JDK环境变变量
我们整一个文件:/etc/profile.d/my_env.sh
然后加这些
#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin
之后需要使用命令source /etc/profile使行为变量生效
用java -version指令来验证一下java环境是否已经配置好
在本机上下载好hadoop包
网址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
选择hadoop-3.1.3.tar.gz
然后用Xftp传到linux虚拟机上,解压
我们还用之前那个文件:/etc/profile.d/my_env.sh
在最后面加上这些
#HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
同样使用命令source /etc/profile使行为变量生效
类似的,hadoop version可以验证hadoop是否已经配置好
hadoop配置很混乱
我选择伪分布式单机部署。
在这之前还要依次进行配置
修改Linux网络参数文件:/etc/sysconfig/network-scripts/ifcfg-ens33
修改/etc/hosts的映射
加上这么一行
192.168.10.102 hadoop102
配置core-site.xml
fs.defaultFS hdfs://hadoop102:9000 hadoop.tmp.dir /hadoop/data
配置hdfs-site.xml
dfs.replication 1
配置mapred-site.xml
mapreduce.framework.name yarn
配置yarn-site.xml
yarn.resourcemanager.hostname hadoop102 yarn.nodemanager.aux-services mapreduce_shuffle yarn.scheduler.maximum-allocation-mb 2000 yarn.nodemanager.resource.memory-mb 2000
在profile中添加环境变量并执行source /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_161 export HADOOP_HOME=/bigdata/hadoop-3.1.0 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
执行hdfs namenode -format初始化,start-all.sh来启动hadoop
至此,hadoop已经可以使用了
下载好Hive的包
选择apache-hive-3.1.2-src.tar.gz
然后用Xftp传到linux虚拟机上,解压
还是之前那个文件:/etc/profile.d/my_env.sh
在最后面加上这些
#HIVE_HOME export HIVE_HOME=/opt/module/hive export PATH=$PATH:$HIVE_HOME/bin
然后在hive的文件夹下执行bin/hive就可以进入Hive了
执行各种指令就很类似于sql
在开始,我们要先在宏观上对Hive的执行流程进行了解,这部分中我们并没有花费很长时间阅读源码,这并不符合“宏观上了解并分配任务”的目的,具体源码的分析是等着后面去做的。
Hive的核心性质是什么呢?其核心是将Hql——一种类似sql的用于操作Hive的语言——经过一系列解析、构建、转化、优化后转化为MapReduce任务进行执行。那么我们的核心就是:找到入口,然后沿着这条执行的路径进行分析。
再具体来说,Hive的执行过程如下图:
我们初步划分了四块任务,分给四个人进行分析:
1.将HQL转化成抽象语法书AST
2.将抽象语法树AST转换成查询块QB
3.将查询块QB转换成逻辑查询计划(OP Tree)
4.对OP Tree进行逻辑优化
我的任务是第一块
宏观任务已经确定。接下来,我需要先对大致的源码执行流程进行进一步地了解,同时至少锁定我的分析人物的起点