[SDU软件工程实践]Blog1-hive基础安装与整体规划

2021SC@SDUSC


到写这篇博客为止,我己经初步装好了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环境是否已经配置好
这个指令查看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是否已经配置好
和java很类似

Hadoop配置

hadoop配置很混乱
我选择伪分布式单机部署。
在这之前还要依次进行配置
修改Linux网络参数文件:/etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO以及最后三行是修改的重点
修改/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进行逻辑优化
我的任务是第一块

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值