目录
1.Java环境安装
1.下载安装包并上传服务器
2.解压安装包,并且配置环境变量
2.Hadoop伪分布式安装配置
1.下载安装包,并上传服务器
2.解压并且配置环境变量
3.修改Hadoop配置文件
4.启动hdfs
3.Hive安装和配置
1.下载到本地并上传服务器
2.解压并且配置
3. 修改hive安装目录下的conf下的hive-site.xml
4.放置 MySQL jdbc jar包
5.初始化元数据库
4.hive远程连接
前言:
可能一次不成功,多来几次
看日志,看日志,看日志,
放端口,放端口,放端口
环境描述:
阿里云2h2g云服务器(国内节点)
ubuntu20.04
1.Java环境安装
1.下载安装包并上传服务器
网站下载安装包到本地,使用finashell等远程控制软件上传 java8安装包
https://www.azul.com/downloads/?package=jdk#zulu
2.解压安装包,并且配置环境变量
#解压压缩包
tar -zxvf zulu8.68.0.21-ca-jdk8.0.362-linux_x64.tar.gz
#重命名解压后的文件为java
mv zulu8.68.0.21-ca-jdk8.0.362-linux_x64 java
#编辑当前用户的环境变量
nano .bashrc
此处我选择 的是nano编辑器,你也可以选择vi或者vim编辑器
#在打开文件最后加入
export JAVA_HOME=/home/hadoop/java
export PATH=$PATH:/home/hadoop/java/bin
此处我的当前目录是/home/hadoop, 你也可以选择安装到/usr/local/lib,我更喜欢安装到当前用户的工作目录
#重新生效配置文件
source .bashrc
#检验java安装是否成功
java -version
2.Hadoop伪分布式安装配置
0.安装包版本: Hadoop 3.2.3
1.下载安装包,并上传服务器
由于某些原因,我选择国内镜像(清华源)
Index of /apache/hadoop/common (tsinghua.edu.cn)
我选择的3.2.3版本
下载在本地电脑,然后上传服务器到当前用户(我的是Hadoop)的工作目录
2.解压并且配置环境变量
#解压压缩包
tar -zxvf hadoop-3.2.3.tar.gz
#重命名文件夹
mv hadoop-3.2.3 hadoop
#编辑当前用户的环境变量
nano .bashrc
#在.bahsrc文件最后加入
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
此处我的当前linux用户名是hadoop,所以是/home/hadoop开头
#使配置文件生效
source .bashrc
#检验hadoop是否安装成功
hadoop version
3.修改Hadoop配置文件
做到这里,仅仅是安装好Hadoop,想要运行伪分布式,还需要修改core-site.xml 和hdfs.xml文件
(1)修改core-site.xml文件
使用编辑器打开Hadoop安装目录下的etc/hadoop/core-site.xml文件
添加以下文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
</configuration>
(2)修改hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.address</name>
<value>0.0.0.0:50052</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/tmp/dfs/data</value>
</property>
</configuration>
注意,我此处添加dfs.datanode.address配置项
是因为阿里云云服务器会自带一个进程(阿里云盾),端口与datanode默认的50010端口冲突了,我只有修改datanode端口
ps:
这是Hadoop常用端口文章
4.启动hdfs
#在hadoop安装目录下sbin文件夹
start-dfs.sh
3.Hive安装和配置
我选择的本地模式安装,使用mysql存放元数据
1.下载到本地并上传服务器
版本选择: 3.1.2
使用清华镜像源:Index of /apache/hive/hive-3.1.2 (tsinghua.edu.cn)
2.解压并且配置
#解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz
#重命名
mv apache-hive-3.1.2-bin hive/
#配置当前用户的环境变量
nano .bashrc
#在.bashrc文件中添加以下代码
export HIVE_HOME=/home/hadoop/hive
export PATH=$PATH:$HIVE_HOME/bin
一样的道理,你安装在哪里,/home/hadoop就替换成你的安装目录
#使配置文件生效
source .bashrc
3. 修改hive安装目录下的conf下的hive-site.xml
#重命名文件
cd /home/hadoop/hive/conf
mv hive-default.xml.template hive-default.xml
#在hive安装目录下的conf文件夹下新建hive-site.xml
nano hive-site.xml
#添加以下配置
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?useSSL=false&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>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>******</value>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>True</value>
</property>
</configuration>
tips:
1.在jdbc:mysql://localhost:3306/hive?这行要先在mysql里面创建名字为hive的数据库(因为我是采取的本地模式安装hive)
2.在javax.jdo.option.ConnectionUserName这行的value值是mysql用户名(我的是root)
3.在javax.jdo.option.ConnectionPassword这行的value值是mysql的密码(我打码了)
4.放置 MySQL jdbc jar包
网上下载对应版本的jdbc的jar放入hive安装目录的lib下
下载链接 MySQL :: Download Connector/J
下载后上传至服务器的hive安装目录下的lib文件夹下
5.初始化元数据库
我采用的hive的本地模式安装,使用mysql存储元数据,所以我要对mysql进行配置
1.启动mysql
#先查询mysql服务状态
service mysql status
#如果没有启动就输入以下命令,启动就跳过此命令
service mysql start
#输入以下命令后,以root用户并且输入你的mysql密码登录,这步是登录到你的mysql控制台
mysql -u root -p
2.配置mysql允许hive接入
#将所有数据库的所有表的所有权限赋给hive用户,后面的***是配置hive-site.xml中配置的连接密码
mysql> grant all on *.* to hive@localhost identified by '***';
#刷新mysql系统权限关系表
mysql> flush privileges;
3.初始化元数据(这步要在hive安装目录下进行)
schematool -initSchema -dbType mysql
4.启动hive!!!
1.先启动haoop
#在Hadoop安装目录下的sbin目录下执行以下命令
start-dfs.sh
2.再启动hive
#在hive安装目录下的bin文件夹下输入以下命令
hive
启动Hive过程中,可能出现的错误和解决方案如下:
【错误1】
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument
【原因】
com.google.common.base.Preconditions.checkArgument 这是因为hive内依赖的guava.jar和hadoop内的版本不一致造成的。
【解决方法】
1.查看hadoop安装目录下share/hadoop/common/lib内guava.jar版本
2.查看hive安装目录下lib内guava.jar的版本 如果两者不一致,删除版本低的,并拷贝高版本的 问题解决!
【错误2】org.datanucleus.store.rdbms.exceptions.MissingTableException: Required table missing : “VERSION” in Catalog “” Schema “”. DataNucleus requires this table to perform its persistence operations.
【解决方案】
进入hive安装目录,执行如下命令:./bin/schematool -dbType mysql -initSchema
启动进入Hive的交互式执行环境以后,会出现如下命令提示符:
hive>
4.hive远程连接
我使用的dbeaver工具远程连接。
先在Hadoop的配置文件core-site.xml中加入以下配置
xxx为你当前Linux用户名
<property>
<name>hadoop.proxyuser.xxx.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.xxx.hosts</name>
<value>*</value>
</property>
首先现在服务器端 启动hiveserver2
hive --service hiveserver2
因为自己机器是小机器,启动很慢,要有多个hive session出来了,才算好,
查看hiveserver2是否启动成功 ,可以查看端口sudo netstat -anp|grep 10000 ,如果显示被监听,并且在浏览器输入机器ip+端口号可以展示以下界面就代表成功了hiveserver2,
就可以连接了
当使用dbeaver等数据库可视化工具远程连接时,
先删除工具自带的驱动,
然后将服务器hive安装目录下的jdbc文件夹里面的hive-jdbc-3.1.2-standalone.jar下载到本地,并且在dbeaver中使用。
tips:
1.连接时密码可以时当前Linux用户名和密码,
也可以是在hive-site.xml中设置的 mysql用户名和密码
2.云服务器在厂商控制台放端口
3.有问题记住先看日志