栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Ubuntu下搭建伪分布式从0开始安装Hive详细教程(从JDK安装、Hadoop搭建开始)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ubuntu下搭建伪分布式从0开始安装Hive详细教程(从JDK安装、Hadoop搭建开始)

Ubuntu下搭建伪分布式从0开始安装Hive详细教程(从JDK安装、Hadoop搭建开始)

环境:VMware® Workstation 16 Pro、Ubuntu18.04

1、安装SSH和配置SSH无密码登录
sudo apt-get install openssh-server

安装后,可使用以下命令登录本机:

ssh localhost

输入 yes 与用户密码,就可以登录到本机

接着我们退出 SSH 登录

exit

配置无密码登录:

cd ~/.ssh/
ssh-keygen -t rsa

注意这里第二步要你输入文件名时不用输入,直接一路 Enter 选择默认值就好了!

cat ./id_rsa.pub >> ./authorized_keys

此时再用 ssh localhost 命令无需密码即可登录了。

2、安装Java环境 2.1 安装JDK

对于 Hadoop3.1.3 及以上版本而言,需要使用 JDK1.8 或者更新的版本,这里我们使用的 JDK 版本为1.8.0_301,安装包可以从 Oracle 官网下载:Java Downloads | Oracle,Java官网安装太麻烦了

也可从我的百度网盘下载:jdk-8u301-linux-x64.tar.gz(提取码:6del)

接着在 /usr/lib 目录下创建 jvm 文件夹来保存 JDK 文件:

cd /usr/lib
sudo mkdir jvm

可以用 Xshell 连接虚拟机,把 JDK 文件上传到虚拟机,解压缩之前的 JDK 文件到上述目录中:

cd ~/Downloads
sudo tar -zxvf ./jdk-8u301-linux-x64.tar.gz -C /usr/lib/jvm
2.2 配置JDK环境
vim ~/.bashrc

在文件末尾处添加以下几行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_301
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH


保存并退出,接着使我们刚加入的环境变量生效:

source ~/.bashrc
3.3 检验安装

输入以下命令:

java -version

若出现如下则说明安装成功:

3、安装单机Hadoop 3.1 下载安装Hadoop

下载地址:Apache Hadoop,这里官网下载较快,不要下载 src 源码包!

也可从我的百度网盘下载:hadoop-3.1.3.tar.gz(提取码: x2vu)

这里我安装的 Hadoop 版本为3.1.3,下载好后,和上面的 JDK 一样上传到虚拟机,执行以下命令安装:

sudo tar -zxf ~/Downloads/hadoop-3.1.3.tar.gz -C /usr/local

修改目录名称:

cd /usr/local
sudo mv  ./hadoop-3.2.2/ ./hadoop

赋予可执行权限:(如用 root 登录可以忽略,以下的 wyc 是我当前普通用户名)

sudo chown -R wyc ./hadoop
3.2 检查安装

进入 hadoop 文件夹,查看安装的 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

若出现以下输出,则说明 Hadoop 安装成功。

4、配置Hadoop伪分布 4.1 配置 .bashrc 文件

修改 .bashrc 文件:

sudo vim ~/.bashrc

往文件末加入以下两行:

# 注意此处的路径和你的hadoop文件最后解压存放的位置是一致的
export HADOOP_HOME=/usr/local/hadoop


使配置文件立即生效:

source ~/.bashrc
4.2. 配置伪分布式

对于伪分布式配置,我们需要修改 core-site.xml 和 hdfs-site.xml 两个文件,这两个文件在我们单机安装好的 Hadoop 目录下的 /etc/hadoop 文件夹内。

进入文件所在文件夹:

cd /usr/local/hadoop/etc/hadoop 

修改我们的 core-site.xml 文件:

sudo vim core-site.xml

修改文件内容如下:(实则就是往 configuration 里添加参数,注意缩进)


    
        hadoop.tmp.dir
        file:/usr/local/hadoop/tmp
        Abase for other temporary directories.
    
    
        fs.defaultFS
        hdfs://localhost:9000
    

如下:

接着修改 hdfs-site.xml 文件:

sudo vim hdfs-site.xml

也是添加一些配置参数,修改后如下:(注意缩进)


    
        dfs.replication
        1
    
    
        dfs.namenode.name.dir
        file:/usr/local/hadoop/tmp/dfs/name
    
    
        dfs.datanode.data.dir
        file:/usr/local/hadoop/tmp/dfs/data
    


到这,伪分布式安装所需要的配置就配置好啦!

5、初始化文件系统

先回到我们的 Hadoop 安装目录下:

cd /usr/local/hadoop

使用以下命令初始化文件系统:

./bin/hdfs namenode -format

有如下输出,就是初始化成功了:

6、验证安装 6.1 启动HDFS

文件初始化成功后,赋予 logs 文件夹相关权限:

sudo chmod -R wyc ./logs

可使用如下命令启动 HDFS:

./sbin/start-dfs.sh
6.2 部分报错

可是报了如下错误:

root@wyc:/usr/local/hadoop# ./sbin/start-dfs.sh
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [wyc]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.


解决办法:将start-dfs.sh,stop-dfs.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root


将start-yarn.sh,stop-yarn.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

再次启动 HDFS命令,又接着报错:

root@wyc:/usr/local/hadoop# ./sbin/start-dfs.sh
Starting namenodes on [localhost]
ERROR: JAVA_HOME is not set and could not be found.
Starting datanodes
ERROR: JAVA_HOME is not set and could not be found.
Starting secondary namenodes [wyc]
ERROR: JAVA_HOME is not set and could not be found.


使用如下命令修改环境文件:

sudo vim ./etc/hadoop/hadoop-env.sh

添加如下内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_301
export HADOOP=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin
6.3 启动成功

再次启动 HDFS命令,出现如下输出就没问题啦:

启动后,使用 jps 指令查看所有 Java 进程,若 HDFS 启动成功输出如下:

此时可访问 Web 页面(在浏览器输入:http://192.168.153.142:9870(这里198.168.153.142是我 Ubuntu 的 IP ,你们换成自己的就可以了)):

7、安装Hive 7.1 下载压缩包并解压

官网下载目录如下:Index of /hive

建议清华镜像网站下载:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/

下载文件如下:apache-hive-3.1.2-bin.tar.gz,进入下载目录,解压压缩包:

cd ~/Downloads
sudo tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C /usr/local 
7.2 安装Hive

进入到 /usr/local 目录下,更改文件夹名,赋予用户权限:

cd /usr/local
sudo mv apache-hive-3.1.2-bin hive     
sudo chown -R wyc ./hive
7.3 配置环境变量

修改 ~/.bashrc 文件:

vim ~/.bashrc

增添下面几行:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=/usr/local/hadoop


运行如下命令使配置立即生效:

source  ~/.bashrc
7.4 修改配置文件

修改配置 hive-default.xml 文件:

cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml

新建 hive-site.xml 文件:

sudo vim hive-site.xml

将以下内容写入文件:




  
    javax.jdo.option.ConnectionURL
    jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true
    JDBC connect string for a JDBC metastore
  
  
    javax.jdo.option.ConnectionDriverName
    com.mysql.cj.jdbc.Driver
    Driver class name for a JDBC metastore
  
  
    javax.jdo.option.ConnectionUserName
    hive
    username to use against metastore database
  
  
    javax.jdo.option.ConnectionPassword
    hive
    password to use against metastore database
  
  
    datanucleus.autoCreateTables
    True
  

按下 ESC 键,:wq,保存并退出。

8、MySQL安装与配置 8.1 安装MySQL

我们使用默认的 apt 包管理器安装即可:

sudo apt-get update
sudo apt-get install mysql-server

启动 MySQL:

service mysql start

检查是否启动成功:

systemctl status mysql.service

如下输出有绿色 Active 就是正常启动:

8.2 配置MySQL

初始化 MySQL:

sudo mysql_secure_installation

接下来会需要配置好几个内容,下面是我的部分配置:

root@wyc:~# sudo mysql_secure_installation

...

# 这里是询问是否安装密码插件,我选择 No
Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: n

# 这里为 root 用户设置密码
Please set the password for root here.
New password: 
Re-enter new password: 

# 删除匿名用户,我选 Yes
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

# 禁止root管理员从远程登录,这里我选 No
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

# 删除test数据库并取消对它的访问权限, 我选 Yes
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

# # 刷新授权表,让初始化后的设定立即生效, 选 Yes
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

...

编辑 MySQL 配置文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在 mysqld 下添加以下一行数据:

character_set_server=utf8


重启你的 MySQL 服务:

service mysql restart
sudo mysql -u root -p  #登陆MySQL shell界面

使用如下命令查看你的 MySQL 版本:

mysql>SELECT @@VERSION;


我的 MySQL 是 5.7.37 的版本

9、 安装MySQL jdbc包

上述博客安装的 MySQL 版本为 5.7.37,所以我们需要下载对应版本的 MySQL jdbc 包

  • MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7, and 5.6. Please upgrade to MySQL Connector/J 8.0.
  • 官方更推荐MySQL5.6以上使用connector/j 8.0

mysql-connector-java各种版本下载 地址在这,点击 jar 包下载,如下:

cd ~/Downloads
cp mysql-connector-java-5.1.37.jar  /usr/local/hive/lib
10、为Hive创建MySQL账号

启动 MySQL 服务,登录 shell:

service mysql start #启动mysql服务
sudo mysql -u root -p  #登陆shell界面

新建 hive 数据库:

mysql>CREATE DATABASE hive;

创建用户 hive,设置密码(这里根据配置文件设置为 hive),使其能连接上 hive 数据库:

mysql>create user 'hive'@'%' identified by  'hive';
mysql>grant all privileges on hive.* to 'hive'@'%' with grant option;
mysql>flush privileges;

这里若提示密码不符合,则先执行以下命令,再执行上述命令:

mysql>set global validate_password.policy=LOW;
mysql>set global validate_password.length=4;

退出 MySQL:

mysql>quit;
11、验证Hive安装及错误处理 11.1 启动Hadoop
cd /usr/local/hadoop
sbin/start-dfs.sh
11.2 启动Hive
cd /usr/local/hive
./bin/schematool -dbType mysql -initSchema
11.3 错误处理

在初始化hive时,报告错误:

Cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be in the path

解决办法:在命令行中执行

cd /usr/local/hive/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh

在hive-env.sh文件里加下面的内容:

export HADOOP_HOME=/usr/local/hadoop        
source hive-env.sh

再次初始化,报下面错误

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
	at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
	at org.apache.hadoop.conf.Configuration.set(Configuration.java:1338)
	at org.apache.hadoop.mapred.JobConf.setJar(JobConf.java:518)
	at org.apache.hadoop.mapred.JobConf.setJarByClass(JobConf.java:536)
	at org.apache.hadoop.mapred.JobConf.(JobConf.java:430)
	at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5141)
	at org.apache.hadoop.hive.conf.HiveConf.(HiveConf.java:5104)
	at org.apache.hive.beeline.HiveSchemaTool.(HiveSchemaTool.java:96)
	at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1473)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.util.RunJar.run(RunJar.java:318)
	at org.apache.hadoop.util.RunJar.main(RunJar.java:232)

这是因为 hive 内依赖的 guava.jar 和 hadoop 内的版本不一致造成的。

查看 hadoop 安装目录下的 guava.jar 版本:

ls /usr/local/hadoop/share/hadoop/common/lib/guava*

输出如下:

接着查看 Hive 下的 guava.jar 版本:

ls /usr/local/hive/lib/guava*

输出如下:

可以看到 Hadoop 内的 guava.jar 版本是要高于 Hive 内带的的,所以使用 Hadoop 的替代 Hive 的:

sudo rm /usr/local/hive/lib/guava-19.0.jar
sudo cp /usr/local/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/hive/lib

再次初始化,问题解决。

11.4 再次启动Hive
cd /usr/local/hive
bin/hive

正常启动会出现一个交互界面如下,就证明启动成功啦:

hive>

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号