《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就可以了。




