2021SC@SDUSC
目录
- 安装Hadoop
- Linux虚拟机
- XShell和Xftp
- JDK
- Hadoop安装
- Hadoop配置
- 安装Hive
- Hive总体流程与任务分配
到写这篇博客为止,我己经初步装好了hadoop和hive,hive已经可以运行了,且已经有了源码,但是没有截图,只能尽量配图了。
安装Hadoop
hive要运行在hadoop上,那么使用hive的必要前提就是安装hadoop了。
Linux虚拟机
Linux选择了CentOS-7,有阿里云的镜像
我们设法搞一个VMware,用文件安装即可。过程中要设置root用户密码和个人用户。
XShell和Xftp
这两样工具用于远程访问和文件传输,算是个额外的工具。
JDK
在本机上下载好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安装
在本机上下载好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配置
hadoop配置很混乱
我选择伪分布式单机部署。
在这之前还要依次进行配置
修改Linux网络参数文件:/etc/sysconfig/network-scripts/ifcfg-ens33
修改/etc/hosts
的映射
加上这么一行
192.168.10.102 hadoop102
配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/data</value>
</property>
</configuration>
配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<!-- 指定MapReduce运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 分别指定ResouceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<!-- 分别指定MapReduce的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2000</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2000</value>
</property>
</configuration>
在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
下载好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的执行流程进行了解,这部分中我们并没有花费很长时间阅读源码,这并不符合“宏观上了解并分配任务”的目的,具体源码的分析是等着后面去做的。
Hive的核心性质是什么呢?其核心是将Hql——一种类似sql的用于操作Hive的语言——经过一系列解析、构建、转化、优化后转化为MapReduce任务进行执行。那么我们的核心就是:找到入口,然后沿着这条执行的路径进行分析。
再具体来说,Hive的执行过程如下图:
我们初步划分了四块任务,分给四个人进行分析:
1.将HQL转化成抽象语法书AST
2.将抽象语法树AST转换成查询块QB
3.将查询块QB转换成逻辑查询计划(OP Tree)
4.对OP Tree进行逻辑优化
我的任务是第一块
宏观任务已经确定。接下来,我需要先对大致的源码执行流程进行进一步地了解,同时至少锁定我的分析人物的起点