在Windows上安装Hadoop和Hive


  最近需要使用大数据平台,装了1天的hadoop和hive,终于装好了,不得不说网上的攻略千奇百怪,需要结合各种攻略才能完成安装(悲催),因此写下这边文章来汇总下如何在windows系统中安装hadoop和hive,希望对各位有帮助。

准备资源

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

JDK安装

这个网上搜就有很多了,傻瓜式安装之后,在系统环境变量中的PATH添加JDK下的bin,安装成功后如在cmd输入

java -version

在这里插入图片描述

MySQL安装

MYSQL 8.0不同版本的安装
参考这篇文章,安装好后可通过MySQL Workbench打开数据库
在这里插入图片描述

Hadoop的安装

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的安装

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}/&lt;username&gt; 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&amp;serverTimezone=UTC&amp;useSSL=false&amp;characterEncoding=UTF-8&amp;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中创建一个数据库

hive> create database hive_test;

在这里插入图片描述
创建的时候会在终端出现一堆数据,下面的创建就略过终端步骤
输入localhost:9870看看服务器端的结果
在这里插入图片描述
  在服务器端可以看到已成功创建,但是这一堆日志看起来不太美观,因此把这些无用的日志屏蔽掉,具体的做法如下:
  打开Hadoop下的log4j.properties文件,修改log4j.threshold=ALLlog4j.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

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值