暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

理解hive的运行机制

1144

《hadoop还是要了解一点》这篇文章中提到hadoop伪分布的安装,然后集群版怎么安装呢?

其实也不难,在集群中,HDFS NameNode 和YARN ResourceManager相当于集群的master,集群中的机器或客户端就是连接这两个节点。

HDFS中的datenode支持分布式,但NameNode本身还是单点,包括YARN ResourceManager也是;它们可以结合zk做到高可用。

那如何支持集群版呢?集群中相关的配置都是一样的,重点指定NameNode和ResourceManager的通讯地址;其次格式化HDFS datenode要在NameNode上进行;最后通过etc/hadoop/workers文件将集群中的机器地址写上,形成集群。

另外对于伪分布Hadoop,也可以专门配置一台hadoop客户端,安装所有相关软件,只要ResourceManager和NameNode指定远程机器就行了。

接下去来到正题,什么是Hive。

Hive是一个数仓工具,通过metastore连接hdfs,metastore就相当于表结构,可以使用mysql存储。其次通过hive sql语句,将其转换MR任务,这是一个创举,因为写MR是有复杂度的,而写sql则简单多了,极大方便了数据分析师。

hive的架构图如下:

本文主要说说hive安装的问题。

安装配置很简单:

$ $HADOOP_HOME/bin/hadoop fs -mkdir       tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

hive数据存储在HDFS指定目录。

hive-env.sh配置很简单,运行hive的机器一般可以是hadoop集群中的某一台:

export HIVE_HOME=<hive-install-dir>
export HADOOP_HOME=<hadoop-install-dir>
export HIVE_AUX_JARS_PATH=

对于hive命令行来说,由于其有完整的hadoop环境,只要找到YARN ResourceManager就能调度。

metastore也可以存储在远程机器上,配置hive-site.xml:

<property>
   <name>javax.jdo.option.ConnectionUserName</name>
   <value>用户名</value>
</property>
<property>
   <name>javax.jdo.option.ConnectionPassword</name>
   <value>密码</value>
</property>
<property>
   <name>javax.jdo.option.ConnectionURL</name>mysql
   <value>jdbc:mysql://localhost:3306/hive2?useSSL=false</value>
</property>
<property>
   <name>javax.jdo.option.ConnectionDriverName</name>
   <value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
   <name>hive.metastore.warehouse.dir</name>
   <value>/user/hive/warehouse</value>
</property>
<property>
   <name>hive.metastore.uris</name>
   <value>thrift://ip:6083</value>
</property>

首先初始化mysql:

$ $HIVE_HOME/bin/schematool -dbType <db type> -initSchema

重点说说hive.metastore.uris参数,其在服务器端和客户端有不同的理解,和metastore有关;在metastore服务器端,该参数表示服务端口;在客户端,则配置的是服务器端的地址,用于连接metastore。

在服务器端启动metastore:

hive --service metastore -p 6083

客户端则执行hive连接:

hive

hive首先根据hive.metastore.uris参数连接metastore服务,而写完sql则找到YARN进行任务调度。

上面的这种方式对于客户端来说,需要有完整的hadoop和hive环境,称之为命令行的方式。

在安装hive的时候也遇到过问题,主要是:

1:NoSuchMethodError错误,因为hive内依赖的guava.jar和hadoop内的版本不一致造成的,替换较低版本的就可以。

2:运行hive失败,原先安装的是openjdk12,后来替换为java 1.8就可以了。

文章转载自虞大胆的叽叽喳喳,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论