https://cwiki.apache.org/confluence/display/Hive/GettingStarted
1)上传apache-hive-2.3.0-bin.tar.gz 到/opt/software目录下,并解压到/opt/module
2)修改apache-hive-2.3.6-bin名称为hive
3)将Mysql的mysql-connector-java-5.1.27-bin.jar拷贝到/opt/module/hive/lib/
4)在/opt/module/hive/conf路径上,创建hive-site.xml文件
添加如下内容
注意:hive安装在哪个服务器节点,thrift://hadoop102:9083中的主机名就更换为相应的主机名。
3)启动服务
注意:hive2.x版本需要启动两个服务metastore和hiveserver2,否则会报错Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHivemetaStoreClient
4)服务启动完毕后在启动Hive
[test@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh
[test@hadoop102 hadoop-2.7.2]$ sbin/start-yarn.sh
1)查看MySQL是否安装,如果安装了,卸载MySQL
(1)查看
(2)卸载
2)解压mysql-libs.zip文件到当前目录
3)进入到mysql-libs文件夹下
1)安装mysql服务端
2)查看产生的随机密码
3)查看mysql状态
4)启动mysql
1)安装mysql客户端
2)链接mysql
3)修改密码
4)退出mysql
配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。
1)进入mysql
2)显示数据库
3)使用mysql数据库
4)展示mysql数据库中的所有表
5)展示user表的结构
6)查询user表
7)修改user表,把Host表内容修改为%
8)删除root用户的其他host
9)刷新
10)退出
Tez是一个Hive的运行引擎,性能优于MR。
用Hive直接编写MR程序,假设有四个有依赖关系的MR作业,上图中,绿色是Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到HDFS。
Tez可以将多个有依赖的作业转换为一个作业,这样只需写一次HDFS,且中间节点较少,从而大大提升作业的计算性能。
1)下载tez的依赖包:http://tez.apache.org
2)拷贝apache-tez-0.9.1-bin.tar.gz到hadoop102的/opt/software目录
[test@hadoop102 software]$ ls
apache-tez-0.9.1-bin.tar.gz
3)将apache-tez-0.9.1-bin.tar.gz上传到HDFS的/tez目录下。
[test@hadoop102 conf]$ hadoop fs -mkdir /tez
[test@hadoop102 conf]$ hadoop fs -put /opt/software/apache-tez-0.9.1-bin.tar.gz/ /tez
4)解压缩apache-tez-0.9.1-bin.tar.gz
[test@hadoop102 software]$ tar -zxvf apache-tez-0.9.1-bin.tar.gz -C /opt/module
5)修改名称
[test@hadoop102 module]$ mv apache-tez-0.9.1-bin/ tez-0.9.1
1)进入到Hive的配置目录:/opt/module/hive/conf
[test@hadoop102 conf]$ pwd
/opt/module/hive/conf
2)在Hive的/opt/module/hive/conf下面创建一个tez-site.xml文件
[test@hadoop102 conf]$ pwd
/opt/module/hive/conf
[test@hadoop102 conf]$ vim tez-site.xml
添加如下内容
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://www.cnblogs.com/solomongold/p/configuration.xsl"?>
<configuration>
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/tez/apache-tez-0.9.1-bin.tar.gz</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<property>
<name>tez.history.logging.service.class</name>
<value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>
</property>
</configuration>
2)在hive-env.sh文件中添加tez环境变量配置和依赖包环境变量配置
[test@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh
[test@hadoop102 conf]$ vim hive-env.sh
添加如下配置
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/opt/module/hadoop-2.7.2
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/opt/module/hive/conf
# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export TEZ_HOME=/opt/module/tez-0.9.1 #是你的tez的解压目录
export TEZ_JARS=""
for jar in `ls $TEZ_HOME |grep jar`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
done
export HIVE_AUX_JARS_PATH=/opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS
3)在hive-site.xml文件中添加如下配置,更改hive计算引擎
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
1)启动Hive
[test@hadoop102 hive]$ bin/hive
2)创建表
hive (default)> create table student(
id int,
name string);
3)向表中插入数据
hive (default)> insert into student values(1,"zhangsan");
4)如果没有报错就表示成功了
hive (default)> select * from student;
1 zhangsan
1)运行Tez时检查到用过多内存而被NodeManager杀死进程问题:
这种问题是从机上运行的Container试图使用过多的内存,而被NodeManager kill掉了。
2)解决方法:
(1)关掉虚拟内存检查,修改yarn-site.xml,