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用户密码和个人用户。

hive搭建 presto hive搭建的准备工作有哪些_Hive

XShell和Xftp

这两样工具用于远程访问和文件传输,算是个额外的工具。

hive搭建 presto hive搭建的准备工作有哪些_hadoop_02

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环境是否已经配置好

hive搭建 presto hive搭建的准备工作有哪些_hive_03

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是否已经配置好

hive搭建 presto hive搭建的准备工作有哪些_hive_04

Hadoop配置

hadoop配置很混乱

我选择伪分布式单机部署。

在这之前还要依次进行配置

修改Linux网络参数文件:/etc/sysconfig/network-scripts/ifcfg-ens33

hive搭建 presto hive搭建的准备工作有哪些_Hive_05


修改/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搭建 presto hive搭建的准备工作有哪些_hive_06

Hive总体流程与任务分配

在开始,我们要先在宏观上对Hive的执行流程进行了解,这部分中我们并没有花费很长时间阅读源码,这并不符合“宏观上了解并分配任务”的目的,具体源码的分析是等着后面去做的。

Hive的核心性质是什么呢?其核心是将Hql——一种类似sql的用于操作Hive的语言——经过一系列解析、构建、转化、优化后转化为MapReduce任务进行执行。那么我们的核心就是:找到入口,然后沿着这条执行的路径进行分析。

再具体来说,Hive的执行过程如下图:

hive搭建 presto hive搭建的准备工作有哪些_hadoop_07


我们初步划分了四块任务,分给四个人进行分析:

1.将HQL转化成抽象语法书AST

2.将抽象语法树AST转换成查询块QB

3.将查询块QB转换成逻辑查询计划(OP Tree)

4.对OP Tree进行逻辑优化

我的任务是第一块

宏观任务已经确定。接下来,我需要先对大致的源码执行流程进行进一步地了解,同时至少锁定我的分析人物的起点