#夏日挑战赛#,Docker搭建大数据平台之Hadoop,Spark,Hive初探

网友投稿 229 2022-10-18

#夏日挑战赛#,Docker搭建大数据平台之Hadoop,Spark,Hive初探

​​「本文正在参加星光计划3.0–夏日挑战赛」​​

一、 文章前序

序言

网络的发达,使得世界上有网络的每个地方,无时无刻都在产生数据。这些累积的数据,就像无形的巨大资源,等待着人们去挖掘。于是,大数据处理的理论以及实践随之产生的技术越来越成熟。作为一名开发者,学习理解并使用,或许可以用来解决身边的某些问题。本文基于云原生docker,搭建单机版的大数据平台,初探大数据相关技术的搭建使用,抛砖引玉。

相关技术

Zookeeper分布式集群管理、master选举、消息发布订阅、数据存储、分布式锁等等。分布式协调服务,用于维护集群配置的一致性、任务提交的事物性、集群中服务的地址管理、集群管理等。HDFS分布式文件系统,适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭 之后就不需要改变。Yarn分布式资源管理系统,用于同一管理集群中的资源(内存等)MapReduceHadoop的编程框架,用map和reduce方式实现分布式程序设计,类似于Spring。Hive数仓工具,Hive进行数据离线批量处理时,需将查询语言先转换成MR任务,由MR批量处理返回结果,所以Hive没法满足数据实时查询分析的需求。HbaseHadoop下的分布式数据库,类似于NoSQL。Sqoop用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递。HadoopHadoop 是一种分析和处理​大数据​的软件平台,是一个用Java​ 语言实现的 Apache 的开源软件框架,在大量计算机组成的集群中实现了对海量数据的分布式计算。Hadoop=HDFS+Yarn+MapReduce+Hbase+Hive+Zookeeper+Hbase+Hive+Sqoop (生态圈)

用户画像

用户画像:用户信息标签化。数据是通过收集用户的社会属性、消费习惯、偏好特征等产生。通过对数据的分析,对用户或者产品特征进行刻画,统计,从而挖掘潜在的价值信息。标签分类

统计类标签,例如:近30天类的活跃天数,活跃时长等。规则类标签,例如:当用户在30天内的活跃天数大于15天时会被打上 活跃用户 的标签。机器学习挖掘类标签,例如:用户购买商品偏好,用户流失意向等。

二、Docker搭建大数据平台

硬件

宿主机:WIN10 笔记本 16G ,VMWare虚拟机虚拟机:CentOS8,64位,桥接模式,分配内存8G内存,存储80G。本文搭建后,使用free -h 查看,使用了4.6G内存。

技术框架版本以及下载链接

框架包

描述

下载路径

hadoop-2.7.7


​data-id="t31e458f-TCi2gGaj" style="height: 30px;">

hbase-2.1.1


​data-id="t31e458f-5TRLVQ6j" style="height: 30px;">

hive-2.3.4


​data-id="t31e458f-C2Jf5qOF" style="height: 30px;">

jdk1.8.0_144



scala-2.11.12


​data-id="t31e458f-nS3Me50o" style="height: 30px;">

spark-2.4.8-bin-hadoop2.7


​data-id="t31e458f-L5OjdmK8" style="height: 30px;">

zookeeper-3.4.8


​network create --subnet=172.18.0.0/16 spark-net

容器规划

域名

IP

cloud1

172.18.0.2

cloud2

172.18.0.3

cloud3

172.18.0.4

创建基础容器并安装ssh以及免密配置

参数

说明

--name

容器名称

-h

域名

--add-host

/etc/hosts文件中的域名与IP的映射

--net

指定网段

# 拉取基础镜像docker pull ubuntu#创建基础容器并设置当前容器IPdocker run --name cloud1 \--net spark-net --ip 172.18.0.2 \-h cloud1 \--add-host cloud1:172.18.0.2 \--add-host cloud2:172.18.0.3 \--add-host cloud3:172.18.0.4 \-it ubuntu

#清空/etc/apt/sources.list文件echo > /etc/apt/sources.list#向/etc/apt/sources.list文件写入阿里云镜像地址cat >> /etc/apt/sources.list <> ~/.ssh/authorized_keys#测试是否能连接成功ssh root@cloud1

大数据环境安装

各软件版本

软件

版本

Java

1.8.0_144

Scala

2.11.12

Zookeeper

3.4.10

Hadoop

2.7.7

Spark

2.4.8

Hive

2.3.4

安装目录mkdir -p /usr/local/spark将环境所需依赖包拷贝到容器内

# 在容器内创建目录 mkdir -p /opt/spark_tar# 如果依赖包放在/opt下 则进入到/opt目录下然后执行如下命令docker cp apache-hive-2.3.4-bin.tar.gz cloud1:/opt/spark_tardocker cp hadoop-2.7.7.tar.gz cloud1:/opt/spark_tardocker cp jdk-8u191-linux-x64.tar.gz cloud1:/opt/spark_tardocker cp scala-2.11.12.tgz cloud1:/opt/spark_tardocker cp spark-2.4.8-bin-hadoop2.7.tgz cloud1:/opt/spark_tardocker cp zookeeper-3.4.10.tar.gz cloud1:/opt/spark_tardocker cp mysql-connector-java.jar cloud1:/opt/spark_tardocker cp hive-site.xml cloud1:/opt/spark_tar#或执行我放在云盘中的脚本 sh cpAllToCloud1.sh#在容器目录/opt/spark_tar下执行解压tar -zxvf apache-hive-2.3.4-bin.tar.gz -C /usr/local/spark/tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/spark/tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/local/spark/tar -zxvf scala-2.11.12.tgz -C /usr/local/spark/tar -zxvf spark-2.4.8-bin-hadoop2.7.tgz -C /usr/local/spark/tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/spark/mv /usr/local/spark/apache-hive-2.3.4-bin /usr/local/spark/hive-2.3.4#或执行我的脚本 sh tarAllToUsrLocal.sh (也就是把上面的命令放在一个文件内一次执行)cd /usr/local/spark/drwxr-xr-x 9 1000 staff 149 Jul 19 2018 hadoop-2.7.7/drwxr-xr-x 10 root root 184 Jul 14 17:55 hive-2.3.4/drwxr-xr-x 7 uucp 143 245 Oct 6 2018 jdk1.8.0_191/drwxrwxr-x 6 1001 1001 50 Nov 10 2017 scala-2.11.12/drwxr-xr-x 13 501 1000 211 May 8 2021 spark-2.4.8-bin-hadoop2.7/drwxr-xr-x 10 1001 1001 4096 Mar 23 2017 zookeeper-3.4.10/

配置环境变量

vim ~/.bashrcexport JAVA_HOME=/usr/local/spark/jdk1.8.0_191export PATH=$PATH:$JAVA_HOME/binexport SCALA_HOME=/usr/local/spark/scala-2.11.12export PATH=$PATH:$SCALA_HOME/binexport ZOOKEEPER_HOME=/usr/local/spark/zookeeper-3.4.10export PATH=$PATH:$ZOOKEEPER_HOME/binexport HADOOP_HOME=/usr/local/spark/hadoop-2.7.7export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/nativeexport SPARK_HOME=/usr/local/spark/spark-2.4.8-bin-hadoop2.7export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATHexport HIVE_HOME=/usr/local/spark/hive-2.3.4export PATH=$HIVE_HOME/bin:$PATHsource ~/.bashrc

Zookeeper安装及配置

#生成配置文件cp /usr/local/spark/zookeeper-3.4.10/conf/zoo_sample.cfg /usr/local/spark/zookeeper-3.4.10/conf/zoo.cfg#创建zookeeper数据目录mkdir -p /root/zookeeper/tmp#修改配置文件vim /usr/local/spark/zookeeper-3.4.10/conf/zoo.cfg#修改配置项dataDir=/root/zookeeper/tmp#文件末尾添加server.1=cloud1:2888:3888server.2=cloud2:2888:3888server.3=cloud3:2888:3888#保存退出#设置当前Zkserver信息#~/zookeeper/tmp/myid文件中保存的数字代表本机的Zkserver编号#在此设置cloud1为编号为1的Zkserver,之后生成cloud2和cloud3之后还需要分别修改此文件echo 1 > ~/zookeeper/tmp/myid

Hadoop安装及配置

修改Hadoop启动配置文件

#修改Hadoop启动配置文件vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/hadoop-env.sh#文件末尾添加export JAVA_HOME=/usr/local/spark/jdk1.8.0_191export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/nativeexport HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=${HADOOP_HOME}/lib/native"export LD_LIBRARY_PATH=$JAVA_LIBRARY_PATH#保存退出

修改核心配置文件

参数

说明

fs.defaultFS

默认的文件系统

hadoop.tmp.dir

临时文件目录

ha.zookeeper.quorum

Zkserver信息

#修改核心配置文件vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/core-site.xml#在节点内添加如下配置 fs.defaultFS hdfs://ns1 hadoop.tmp.dir /root/hadoop/tmp ha.zookeeper.quorum cloud1:2181,cloud2:2181,cloud3:2181

修改HDFS配置文件

参数

说明

dfs.nameservices

名称服务,在基于HA的HDFS中,用名称服务来表示当前活动的NameNode

dfs.ha.namenodes.

配置名称服务下有哪些NameNode

dfs.namenode.rpc-address..

配置NameNode远程调用地址

dfs.namenode.class="table-last-row" data-id="tf151b9c-oNqaWFGW" style="text-align: center; vertical-align: top; min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default;">

配置NameNode浏览器访问地址

dfs.namenode.shared.edits.dir

配置名称服务对应的JournalNode

dfs.journalnode.edits.dirJournalNode

存储数据的路径

#修改配置文件vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/hdfs-site.xml#在节点内添加如下配置 dfs.nameservices ns1 dfs.ha.namenodes.ns1 nn1,nn2 dfs.namenode.rpc-address.ns1.nn1 cloud1:9000 dfs.namenode. cloud1:50070 dfs.namenode.rpc-address.ns1.nn2 cloud2:9000 dfs.namenode. cloud2:50070 dfs.namenode.shared.edits.dir qjournal://cloud1:8485;cloud2:8485;cloud3:8485/ns1 dfs.journalnode.edits.dir /root/hadoop/journal dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.ns1 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence shell(/bin/true) dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000

修改Yarn的配置文件

参数

说明

yarn.resourcemanager.hostname

RescourceManager的地址,NodeManager的地址在slaves文件中定义

#修改配置文件vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/yarn-site.xml#在节点内添加如下配置 yarn.resourcemanager.hostname cloud1 yarn.nodemanager.aux-services mapreduce_shuffle

修改指定DataNode和NodeManager的配置文件

vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/slaves#改为如下内容cloud1cloud2cloud3

Spark安装及配置

Spark启动配置文件

#生成启动配置文件cp /usr/local/spark/spark-2.4.8-bin-hadoop2.7/conf/spark-env.sh.template /usr/local/spark/spark-2.4.8-bin-hadoop2.7/conf/spark-env.sh#编辑启动配置文件vim /usr/local/spark/spark-2.4.8-bin-hadoop2.7/conf/spark-env.sh#文末添加如下配置export SPARK_MASTER_IP=cloud1export SPARK_WORKER_MEMORY=1024mexport JAVA_HOME=/usr/local/spark/jdk1.8.0_191export SCALA_HOME=/usr/local/spark/scala-2.11.12export SPARK_HOME=/usr/local/spark/spark-2.4.8-bin-hadoop2.7export HADOOP_CONF_DIR=/usr/local/spark/hadoop-2.7.7/etc/hadoopexport SPARK_LIBRARY_PATH=$SPARK_HOME/libexport SCALA_LIBRARY_PATH=$SPARK_LIBRARY_PATHexport SPARK_WORKER_CORES=1export SPARK_WORKER_INSTANCES=1export SPARK_MASTER_PORT=7077export LD_LIBRARY_PATH=$JAVA_LIBRARY_PATH

修改指定Worker的配置文件

vim /usr/local/spark/spark-2.4.8-bin-hadoop2.7/conf/slaves#改为如下内容cloud1cloud2cloud3

修改文件汇总

root@cloud1:/# vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/hadoop-env.shroot@cloud1:/# vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/core-site.xmlroot@cloud1:/# vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/hdfs-site.xmlroot@cloud1:/# vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/yarn-site.xmlroot@cloud1:/# vim /usr/local/spark/hadoop-2.7.7/etc/hadoop/slavesroot@cloud1:/# cp /usr/local/spark/spark-2.4.8-bin-hadoop2.7/conf/spark-env.sh.template /usr/local/spark/spark-2.4.8-bin-hadoop2.7/conf/spark-env.shroot@cloud1:/# vim /usr/local/spark/spark-2.4.8-bin-hadoop2.7/conf/spark-env.shroot@cloud1:/# vim /usr/local/spark/spark-2.4.8-bin-hadoop2.7/conf/slaves

集群部署

提交容器为新镜像

#提交cloud1容器,命令返回新镜像的编号#为新镜像打标签为Sparkdocker commit cloud1 spark:v4#删除原来的cloud1容器,重新创建docker stop cloud1docker rm cloud1#如果docker网段没创建的话,创建下docker network create --subnet=172.18.0.0/16 spark-net

用新镜像创建容器创建3个ssh的Tab页,分别执行如下命令

# 50070 端口# 8088 端口# 7077 端口 spark# 9000 端口 hdfs# 16010 端口 hbase# 2181 端口 zookeeper# 10000 端口 hive serverdocker run --name cloud1 \-p 50070:50070 \-p 8088:8088 \-p 8080:8080 \-p 7077:7077 \-p 9000:9000 \-p 16010:16010 \-p 2181:2181 \-p 10000:10000 \--net spark-net --ip 172.18.0.2 \-h cloud1 \--add-host cloud1:172.18.0.2 \--add-host cloud2:172.18.0.3 \--add-host cloud3:172.18.0.4 \-it spark:v4

docker run --name cloud2 \--net spark-net --ip 172.18.0.3 \-h cloud2 \--add-host cloud1:172.18.0.2 \--add-host cloud2:172.18.0.3 \--add-host cloud3:172.18.0.4 \-it spark:v4

docker run --name cloud3 \--net spark-net --ip 172.18.0.4 \-h cloud3 \--add-host cloud1:172.18.0.2 \--add-host cloud2:172.18.0.3 \--add-host cloud3:172.18.0.4 \-it spark:v4

分别在cloud2和cloud3容器中修改Zookeeper配置

#在cloud2执行echo 2 > ~/zookeeper/tmp/myid#在cloud3执行echo 3 > ~/zookeeper/tmp/myid

在所有节点启动Zkserver

#在所有节点查看Zkserver运行状态:#显示连接不到Zkserver的错误,可稍后查看#Master表示主Zkserver,Follower表示从ZkserverzkServer.sh status#3个节点分别启动ZkserverzkServer.sh start

hdfs的namenode的HA模式的同步

启动JournalNode第一次格式化HDFS的过程中,HA会journalnode通讯,所以需要先把三个节点的journalnode启动。在cloud1节点上执行

# daemons 会启动3个节点的journalnode ,此处执行全启动hadoop-daemons.sh start journalnode# daemon 只会启动当前的journalnodehadoop-daemon.sh start journalnode

格式化NameNode其中一个namenode(任选1个)上格式化,比如此处选择在cloud1节点上格式化namenode

hdfs namenode -format# namenode格式化结果中出现has been successfully formatted.说明格式化成功了# 然后执行在cloud1节点hadoop-daemon.sh start namenode命令,启动namenodehadoop-daemon.sh start namenode

NameNode同步另一个namenode位于cloud2,所以需要在cloud2节点上进行namenode同步操作

hdfs namenode -bootstrapStandby#成功会提示common.Storage: Storage directory /hadoop/dfs/name has been successfully formatted.#启动cloud2节点的namenodehadoop-daemon.sh start namenode

初始化 NameNode ZKFC在其中一个namenode上初始化zkfc

hdfs zkfc -formatZK#Successfully created /hadoop-ha/hdfs1 in ZK.说明ZK格式化成功!

全面启动HDFS

#cloud1节点上执行 停止已启动的HDFSstop-dfs.sh#1)停止2个namenode #2)停止所有datanode #3)停止所有 journalnode #4)停止2个zkfc#全面启动HDFSstart-dfs.sh

在cloud1启动HDFS,Yarn,Spark

启动NameNode,DataNode,zkfc,JournalNode

#上面启动了,这里就不用执行了start-dfs.sh

启动ResouceManager,NodeManager

start-yarn.sh

启动Master,Worker

start-all.sh

查看启动进程

root@cloud1:/# jps2080 NodeManager305 NameNode18 QuorumPeerMain2295 Worker1816 ResourceManager971 DataNode2365 Jps1167 JournalNode2207 Master

外部web访问地址

服务

地址

HDFS

cloud1:50070

Yarn

cloud1:8088

Spark

cloud1:8080

#查看开放端口firewall-cmd --zone=public --list-ports#依次开放端口firewall-cmd --zone=public --add-port=50070/tcp --permanent#重新加载配置firewall-cmd --reload#重启dockersystemctl daemon-reloadsystemctl restart docker#或者关闭防火墙#停止firewallsystemctl stop firewalld.service#禁止firewall开机启动systemctl disable firewalld.service

访问截图​​​/opt/put.txt#添加如下内容shao nai yinai nai yi yishao nai nai

将文本上传到hdfs上

#hdfs上创建目录hdfs dfs -mkdir /opt#上传文本到hdfs上hdfs dfs -put /opt/put.txt /opt#查看文件内容hadoop fs -cat /opt/put.txt

执行Spark统计任务

spark-submit \--master spark://cloud1:7077 \--class com.gtstar.WordCountLocal \/opt/my_scala-1.0-SNAPSHOT.jar \hdfs://cloud1:9000/opt/put.txt \hdfs://cloud1:9000/wc#注意:my_scala-1.0-SNAPSHOT.jar 在我上传的网盘中,scala编写的简单统计

#核心类 com.gtstar.WordCountLocalimport org.apache.spark.{SparkConf, SparkContext}object WordCountLocal { def main(args: Array[String]): Unit = { var conf = new SparkConf() conf.setAppName("WordCountLocal") val sparkContext = new SparkContext(conf) //读取参数1 (待计算的文本内容,/opt/put.txt) val textFileRDD = sparkContext.textFile(args(0)) //空格分词 val wordRDD = textFileRDD.flatMap(line => line.split(" ")) //相同的词进行累加 val pairWordRDD = wordRDD.map(word => (word, 1)) val wordCountRDD = pairWordRDD.reduceByKey((a, b) => a + b) //将结构输出到参数2 wordCountRDD.saveAsTextFile(args(1)) }}#源码放在gitee上 fs -cat /wc/*root@cloud1:/opt# hadoop fs -cat /wc/*(nai,5)(yi,3)(shao,2)

Hive安装

连接mysql(准备个mysql数据库)

mysql中执行# 创建数据库 hive_metadata 并授权限create database if not exists hive_metadata;#创建hive用户,并赋予权限grant all privileges on hive_metadata.* to 'hive'@'%' identified by 'hive';grant all privileges on hive_metadata.* to 'hive'@'localhost' identified by 'hive';grant all privileges on hive_metadata.* to 'hive'@'master' identified by 'hive';flush privileges;

检查环境配置

#如果已配置,则无需执行vim ~/.bashrcexport HIVE_HOME=/usr/local/spark/hive-2.3.4export PATH=$HIVE_HOME/bin:$PATHsource ~/.bashrc

配置hive-site.xml

cp /usr/local/spark/hive-2.3.4/conf/hive-default.xml.template /usr/local/spark/hive-2.3.4/conf/hive-site.xmlvim /usr/local/spark/hive-2.3.4/conf/hive-site.xml# 由于hive-site.xml配置项过多,所以提前配置好# 从外部拷贝到容器中 docker cp /opt/hive-site.xml cloud1:/opt/cp /opt/hive-site.xml /usr/local/spark/hive-2.3.4/conf#注意数据库相关配置,cloud1可替换为外部可连通的IPjavax.jdo.option.ConnectionURLjdbc:mysql://cloud1:3306/hive_metadata?createDatabaseIfNotExist=true

​​配置hive-env.sh​​

cp /usr/local/spark/hive-2.3.4/conf/hive-env.sh.template /usr/local/spark/hive-2.3.4/conf/hive-env.shvim /usr/local/spark/hive-2.3.4/conf/hive-env.shexport HADOOP_HOME=/usr/local/spark/hadoop-2.7.7export HIVE_CONF_DIR=/usr/local/spark/hive-2.3.4/confexport JAVA_HOME=/usr/local/spark/jdk1.8.0_144export HIVE_HOME=/usr/local/spark/hive-2.3.4

初始化Hvie元数据到mysql数据库中

schematool -dbType mysql -initSchema

准备测试导入数据

vim /opt/users.txt1,浙江工商大学2,杭州3,I love4,ZJGSU5,加油哦

执行导入

保持后执行hive进入到命令行模式创建存储user的Hvie表hive> create table users(id int, name string) row format delimited fields terminated by ',';导入数据hive> load data local inpath '/opt/users.txt' into table users;验证导入数据hive> select * from users;

如果执行 hive 时报错

#检查HDFS主备状态#查看nn的状态hdfs haadmin -getServiceState nn1hdfs haadmin -getServiceState nn2#强制性把nn1状态置为active:hdfs haadmin -transitionToActive --forcemanual nn1#多次格式化的话# 删除文件夹rm -rf /root/hadoop/tmp/dfs/data/current# 重新格式化hdfs namenode -format

三、懒人创建模式

cloud1,cloud2,cloud3三个节点的镜像都放到了天翼云盘上,环境信息均已配置完成,只需要挨个启动就行。

cloud1:​​(访问码:hhl5)

cloud2:  ​​(访问码:5km2)

cloud3:  ​​(访问码:j6ik)

#3个节点分别启动ZkserverzkServer.sh start##cloud1全面启动HDFSstart-dfs.sh#cloud1 启动ResouceManager,NodeManagerstart-yarn.sh#cloud1 启动Master,Workerstart-all.sh

四、常见问题

zookeeper集群启动失败rm -rf /root/zookeeper/tmp/version-2/ /root/zookeeper/tmp/zookeeper_server.pid​​​zkServer.sh​​​ startdocker 关闭集群容器后,再重启,再每个容器启动zk,就一直报连接拒绝原因分析:容器IP不固定,会随机变动解决:自定义docker网络docker network create --subnet=172.18.0.0/16 spark-net启动容器时固定IP--net spark-net --ip 172.18.0.2--net spark-net --ip 172.18.0.3--net spark-net --ip 172.18.0.4hdfs的HA启动失败原因分析:操作步骤错误导致节点不能正常格式化解决:操作步骤

cloud1节点启动三个节点的journalnode,因为第一次格式化HDFS的过程中,HA会journalnode通讯格式化cloud1节点namenodeNameNode同步格式化 NameNode ZKFC

hdfs的HA都是standby

# 查看nn的状态hdfs haadmin -getServiceState nn1hdfs haadmin -getServiceState nn2# 强制性把nn1状态置为activehdfs haadmin -transitionToActive --forcemanual nn1#删除文件夹rm -rf /root/hadoop/tmp/dfs/data/current#重新格式化hdfs namenode -format

hive启动失败

tail -f /tmp/root/hive.log 查看日志信息是否有mysql驱动jar cp /opt/my_tar/mysql-connector-java.jar /usr/local/hive-2.3.4/lib/检查HDFS状态 hdfs haadmin -getServiceState nn1/usr/local/hive-2.3.4/conf/hive-site.xml 配置中路径以及msyql地址是否正确

hadoop报错: Operation category READ is not supported in state standby同 3 解决方式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:快速删除Nexus docker镜像仓库镜像
下一篇:Java 深入浅出解析面向对象之抽象类和接口
相关文章

 发表评论

暂时没有评论,来抢沙发吧~