赞
踩
1.JDK8:Hadoop和Hive都是依赖于JAVA开发出来的,JDK的安装是必不可少的,需要注意的是(重点)高版本的JDK可能无法匹配Hadoop,会报出很多错误,请务必使用JDK8。
(我用了JDK15就报了一堆错误…)如果电脑本身就有JDK,可以参考JDK版本切换。
2.MySQL 8.0(422.4M)
3.Hadoop3.1.3.tar.gz版本
4.winutils
5.Hive3.1.2-bin.tar.gz版本
6.Hive:1.0.src.tar.gz 源码版本
7.mysql-connector ZIP Archive
这个网上搜就有很多了,傻瓜式安装之后,在系统环境变量中的PATH添加JDK下的bin,安装成功后如在cmd输入
java -version
MYSQL 8.0不同版本的安装
参考这篇文章,安装好后可通过MySQL Workbench打开数据库
Hadoop安装
这篇文章已经写得很详细了,这里提几点
1.一定要安装JDK8!!!
2.yarn-site.xml按如下配置,避免后期使用hive出现各种bug
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>200</value>
</property>
</configuration>
3.输入start-all.cmd后,弹出下图4个终端(注意终端的名字)算安装完成
3.在Hadoop3.x版本下,可以通过localhost:8088和localhost:9870访问两个地址
至此Hadoop就已经安装完成了
Hive的安装网上有不同的版本,我在这里整合一下流程。
主要参考这篇文章
第一步:下载Hive3.1.2-bin.tar.gz版本和Hive:1.0.src.tar.gz 源码版本
第二步:解压Hive3.1.2-bin.tar.gz版本
第三步:配置Hive的全局变量
第四步:复制apache-hive-3.1.2-bin\conf下的四个文件,重命名
hive-default.xml.template -----> hive-site.xml
hive-env.sh.template -----> hive-env.sh
hive-exec-log4j.properties.template -----> hive-exec-log4j2.properties
hive-log4j.properties.template -----> hive-log4j2.properties
第五步:在apache-hive-3.1.2-bin创建my_hive文件夹,把mysql-connector放到lib下面
第六步:修改配置文件(hive-site.xml 和hive-env.sh)
编辑E:\Hive\apache-hive-3.1.2-bin\conf\hive-site.xml 文件
<!--hive的临时数据目录,指定的位置在hdfs上的目录-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<!--hive的临时数据目录,指定的位置在hdfs上的目录-->
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
<description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, with ${hive.scratch.dir.permission}.</description>
</property>
<!-- scratchdir 本地目录 -->
<property>
<name>hive.exec.local.scratchdir</name>
<value>E:/Hive/apache-hive-3.1.2-bin/my_hive/scratch_dir</value>
<description>Local scratch space for Hive jobs</description>
</property>
<!-- resources_dir 本地目录 -->
<property>
<name>hive.downloaded.resources.dir</name>
<value>E:/Hive/apache-hive-3.1.2-bin/my_hive/resources_dir/${hive.session.id}_resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<!-- querylog 本地目录 -->
<property>
<name>hive.querylog.location</name>
<value>E:/Hive/apache-hive-3.1.2-bin/my_hive/querylog_dir</value>
<description>Location of Hive run time structured log file</description>
</property>
<!-- operation_logs 本地目录 -->
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>E:/Hive/apache-hive-3.1.2-bin/my_hive/operation_logs_dir</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
<!-- 数据库连接地址配置 写入本地的ip-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.x.xxx:3306/hive?createDatabaseIfNotExist=true&serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8&allowPublicKeyRetrieval=true</value>
<description>
JDBC connect string for a JDBC metastore.
</description>
</property>
<!-- 数据库驱动配置 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value> ##这是mysql8.0的驱动,mysql5的驱动为com.mysql.jdbc.Driver
<description>Driver class name for a JDBC metastore</description>
</property>
<!-- 数据库用户名 这是你创建的MySQL账户-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
<!-- 数据库访问密码 这是你的MySQL密码,别输入错了-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>xxxx</value>
<description>password to use against metastore database</description>
</property>
<!-- 解决 Caused by: MetaException(message:Version information not found in metastore. ) -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<description>
Enforce metastore schema version consistency.
True: Verify that version information stored in is compatible with one from Hive jars. Also disable automatic
schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
proper metastore schema migration. (Default)
False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
</description>
</property>
<!-- 自动创建全部 -->
<!-- hive Required table missing : "DBS" in Catalog""Schema" 错误 -->
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
<description>Auto creates necessary schema on a startup if one doesn't exist. Set this to false, after creating it once.To enable auto create also set hive.metastore.schema.verification=false. Auto creation is not recommended for production use cases, run schematool command instead.</description>
</property>
这里使用远程ip访问hdfs可能会引起java.sql.SQLException: null, message from server: "Host ‘xxx.xxx.xxx.xxx’ is not allowed to connect错误,按链接来解决就好了。
编辑(E:\Hive\apache-hive-3.1.2-bin\conf\hive-env.sh 文件)
export HADOOP_HOME=E:\Hadoop\hadoop-3.1.3
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=E:\Hive\apache-hive-3.1.2-bin\conf
# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=E:\Hive\apache-hive-3.1.2-bin\lib
第七步:启动Hadoop,运行start-all.cmd文件
第八步:在hadoop上创建hdfs目录(记得要先启动hadoop)
hadoop fs -mkdir /tmp
hadoop fs -chmod g+w /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /user/hive/warehouse
第九步:在MySQL Workbench下创建hive的数据库(注意为latin1)
第十步:启动初始化,在powershell中输入
hive --service schematool -dbType mysql -initSchema
运行完后可以看到hive数据库下多了很多的table
第十一步:启动metastore
hive --service metastore
这里可能会报一些错误,Hive throws: WstxParsingException: Illegal character entity: expansion character (code 0x8),解决方案就是找到报错行改一下hive-site.xml注释就好了
第十二步:启动hive,在cmd中输入hive
看到hive已经成功运行了,至此Hive已经成功安装了。
在hive中创建一个数据库
hive> create database hive_test;
创建的时候会在终端出现一堆数据,下面的创建就略过终端步骤
输入localhost:9870看看服务器端的结果
在服务器端可以看到已成功创建,但是这一堆日志看起来不太美观,因此把这些无用的日志屏蔽掉,具体的做法如下:
打开Hadoop下的log4j.properties文件,修改log4j.threshold=ALL 为 log4j.threshold=ERROR,即只打印错误信息。
接下来在数据库端可以查看一下吧
可以看到hive_test库已经成功创建了
在hive中创建一个表格
hive> use hive_test;
hive> create table hive_table(id int, name string);
同样看到创建好了,至此在Windows上安装Hadoop和Hive终于大功告成了。
经过测试,在hive上使用drop table可能会出现卡死的情况,需要将character_set_server和character_set_database改成latin1,具体参考解决drop table卡死方案
如果出现InvalidResourceRequestException,参考
运行hadoop任务报错org.apache.hadoop.yarn.exceptions.InvalidResourceRequestException
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。