当前位置:   article > 正文

大数据疫情可视化平台2_虚拟机搭建Hadoop3.2.1环境(JDK11各种奇奇怪怪的错)_hadoop3.3.0与jdk11冲突

hadoop3.3.0与jdk11冲突

说明

记录大数据疫情可视化平台项目的基础环境搭建:虚拟机搭建Hadoop3.2.1环境。环境说明

  • 虚拟机配置CentOS 7.6一台
  • Hadoop3.2.1的安装tar包
  • JDK11的安装tar包(使用yum安装也可,提前需要配置虚拟机的桥接模式连上网络,这里使用JDK11就先埋下了一个坑,后续进行到Hive安装的时候不得不降为JDK8!!!)

目录

  1. 环境搭建步骤
  2. sprigboot整合hdfs
  3. JDK11报错解决

步骤记录

一、环境搭建步骤

1、安装基础服务版CentOS7
在这里插入图片描述

2、使用root用户做以下操作:

1、关闭防护墙并修改成开机不启动
   systemctl stop firewalld
   systemctl disable firewalld
 


2、修改主机名为hadoop101
   hostnamectl set-hostname hadoop101
 
3、修改ip地址 设置网关等操作
    vim /etc/sysconfig/network-scripts/ifcfg-ens33

	TYPE="Ethernet"
	PROXY_METHOD="none"
	BROWSER_ONLY="no"
	BOOTPROTO="static"   **************
	DEFROUTE="yes"
	IPV4_FAILURE_FATAL="no"
	IPV6INIT="yes"
	IPV6_AUTOCONF="yes"
	IPV6_DEFROUTE="yes"
	IPV6_FAILURE_FATAL="no"
	IPV6_ADDR_GEN_MODE="stable-privacy"
	NAME="ens33"
	UUID="8125b2f3-1e37-4b5d-8027-0e9776c61af3"  删除UUID  ********
	DEVICE="ens33"
	ONBOOT="yes"  *************
	IPADDR=192.168.1.101  *********
	GATEWAY=192.168.1.2    **********
	PREFIX=24  ********************
	DNS1=192.168.1.2   ********
 
   
4、配置hosts文件 添加ip地址和主机名的映射
     vim /etc/hosts
	
	添加  
	    192.168.1.101	hadoop101
		192.168.1.102	hadoop102
		192.168.1.103	hadoop103  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

3、同样也要配置windows系统的hosts文件

 C:\Windows\System32\drivers\etc\hosts	
    192.168.24.101	hadoop101
	192.168.24.102	hadoop102
	192.168.24.103	hadoop103
  • 1
  • 2
  • 3
  • 4

4、重启网络服务

   systemctl restart network(reboot)
  • 1

6、安装JDK

   1)查看是否已安装jdk,如已安装请卸载
	     rpm -qa | grep java
		 rpm -e --nodeps 查到java软件包 或使用 yum -y remove *java*
 
    2)准备工作
		visudo
		## Allow root to run any commands anywhere
		root    ALL=(ALL)       ALL
		## Allows members of the 'sys' group to run networking, software,
		## service management apps and more.
		# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

		## Allows people in group wheel to run all commands
		%wheel  ALL=(ALL)       ALL
		%offcn  ALL=(ALL)       NOPASSWD:ALL
 
	3) 在 /home/offcn下创建目录 ,存放用户需要安装的软件以及日志
		mkdir bin app data logs software 
		
	4)上传jdk1.8安装包到  software目录中(注意!!!,不要使用JDK11版本,Hadoop3.2.1暂时不支持JDK11,后面会有很多问题,我坚持了一段时间,后来到hive就不行了,又安装的JDK8)
	  1)解压到 apps目录 tar -zxvf jdk-8u144-linux-x64.tar.gz -C /home/offcn/apps
 
	  2)配置jdk环境变量
	    a)先获取jdk路径:
			[offcn@hadoop101 jdk1.8.0_144]$ pwd
			/home/offcn/app/jdk1.8.0_144
		b)编辑内容/etc/profile
			[offcn@hadoop101 software]$  sudo vim /etc/profile
			#JAVA_HOME
			export JAVA_HOME=/home/offcn/apps/jdk1.8.0_144
			export PATH=$PATH:$JAVA_HOME/bin	
		c)保存后退出:
			:wq
		d)让修改后的文件生效:
			[offcn@hadoop101 jdk1.8.0_144]$ source /etc/profile
		
	5)测试jdk是否安装成功
			[offcn@hadoop101 jdk1.8.0_144]# java -version
			java version "1.8.0_144"
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

6、Xshell、Xftp连接虚拟机上参考:https://blog.csdn.net/qing3154/article/details/104883345

7、克隆虚拟机 ,整出来Hadoop102、Hadoop103,然后 修改主机名和ip地址

8、配置免密登录(三台机器使用联合操作,root用户配置一次)

   1)生成公钥和私钥 ssh-keygen 4个回车     会生成在/homt/offcn/.ssh目录中
   2)分别向3台机器发送公钥(注意,向自己也要发)
      ssh-copy-id hadoop101
	  ssh-copy-id hadoop102
	  ssh-copy-id hadoop103
# 免密登录配置完成
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

9、配置集群时间同步策略(也就是三台虚拟机需要保证一致的时间,此步为搭建集群分布式的必须!!)时间同步的方式:在集群中找一台机器,作为时间服务器,集群中其他机器与这台机器定时的同步时间,比如,每隔十分钟,同步一次时间。

# 配置时间同步实操:三台机器同时执行,使用Xshell三台同时执行命令
(1)时间服务器配置(必须root用户)
	a)	检查ntp是否安装,若没有安装则使用yum install -y ntp进行安装
		[offcn@hadoop101 ~]$ rpm -qa|grep ntp
		ntpdate-4.2.6p5-28.el7.centos.x86_64
		python-ntplib-0.3.2-1.el7.noarch
		fontpackages-filesystem-1.44-8.el7.noarch
		ntp-4.2.6p5-28.el7.centos.x86_64
	b)	修改ntp配置文件
		[offcn@hadoop101 ~]$ sudo vim /etc/ntp.conf
		# 修改内容如下
			i.	修改1(授权192.168.1.0网段上的所有机器可以从这台机器上查询和同步时间),注意要将网段和掩码改成自己本地的
				restrict 192.168.24.10 101 mask 255.255.255.0 nomodify notrap
			
			
			ii.	修改2(集群在局域网中,不使用其他的网络时间)
				server 0.centos.pool.ntp.org iburst
				server 1.centos.pool.ntp.org iburst
				server 2.centos.pool.ntp.org iburst
				server 3.centos.pool.ntp.org iburst为
				#server 0.centos.pool.ntp.org iburst
				#server 1.centos.pool.ntp.org iburst
				#server 2.centos.pool.ntp.org iburst
				#server 3.centos.pool.ntp.org iburst
			iii.添加3(当该节点丢失网络连接,依然可以作为时间服务器为集群中的其他节点提供时间同步)
				server 127.127.1.0
				fudge 127.127.1.0 stratum 10
				
	c)	修改/etc/sysconfig/ntpd 文件
		[offcn@hadoop101 ~]$ sudo vim /etc/sysconfig/ntpd。增加内容如下(让硬件时间与系统时间一起同步):SYNC_HWCLOCK=yes
	d)	重新启动ntpd
		[offcn@hadoop101 ~]$ systemctl status ntpd
		…
		Stopped Network Time Service. 
		…
		[offcn@hadoop101 ~]$ sudo systemctl start ntpd
	e)	执行设置Hadoop101开机自启:
		[offcn@hadoop101 ~]$ sudo systemctl enable ntpd
	# 单独的机器Hadoop101执行
	f) 编写脚本 10s同步一次
		[offcn@hadoop101 ~]$ crontab -e 
		在文件中添加:*/1 * * * * sudo /usr/sbin/ntpdate ntp.aliyun.com

# 单独的机器执行
(2) 将其它机器的ntp服务停掉并关闭开机启动
	[offcn@hadoop102 ~]$ sudo systemctl stop ntpd
	[offcn@hadoop102 ~]$ sudo systemctl disable ntpd
		a)	在其他机器配置1分钟与时间服务器同步一次
		[offcn@hadoop102 ~]$ crontab -e
		#编写脚本
		*/1 * * * * sudo /usr/sbin/ntpdate hadoop101
		b)	修改任意机器时间
		[offcn@hadoop102 ~]$ sudo date -s "2017-9-11 11:11:11"
		c)	十分钟后查看机器是否与时间服务器同步
		[offcn@hadoop102 ~]$ date
	

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
# 举栗效果演示
[root@hadoop102 ~]# systemctl stop ntpd
[root@hadoop102 ~]# systemctl disable ntpd
[root@hadoop102 ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@hadoop102 ~]#
 
[root@hadoop103 ~]# sudo /usr/sbin/ntpdate hadoop101
16 May 19:35:37 ntpdate[11888]: adjust time server 192.168.24.101 offset 0.000058 sec
您在 /var/spool/mail/root 中有新邮件
[root@hadoop103 ~]# date
2022年 05月 16日 星期一 19:35:47 CST
[root@hadoop103 ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

10、安装Hadoop(暂时只在一台机器执行即可,安装完成之后利用配置好的免密登录 发送到另外两台服务器即可)。Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.2.1/

(1)将hadoop-3.2.1.tar.gz 上传到/home/offcn/software
	[offcn@hadoop101 software]$ pwd
	/home/offcn/software
	[offcn@hadoop101 software]$ ll
	总用量 531948
	-rw-r--r--. 1 root root 359196911 38 11:00 hadoop-3.2.1.tar.gz
	-rw-r--r--. 1 root root 185515842 35 16:22 jdk-8u144-linux-x64.tar.gz
	
(2)将hadoop-3.2.1.tar.gz解压到/home/offcn/apps
	[offcn@hadoop101 software]$ tar -zxvf hadoop-3.2.1.tar.gz  -C ../apps/
	[offcn@hadoop101 software]$ ll
	-rw-r--r--. 1 root root 359196911 38 11:00 hadoop-3.2.1.tar.gz
	
(3)将Hadoop添加到环境变量
	[offcn@hadoop101 apps]$ sud o vim /etc/profile
	#HADOOP_HOME
	export HADOOP_HOME=/home/offcn/apps/hadoop-3.2.1
	export PATH=$PATH:$HADOOP_HOME/bin
	export PATH=$PATH:$HADOOP_HOME/sbin
(4)让修改后的文件生效
	[offcn@hadoop101 apps]$ source /etc/profile
(5)测试是否安装成功
	[offcn@hadoop101 apps]$ hadoop version
	Hadoop 3.2.1
# 注意:如果hadoop命令不能用可reboot尝试重启
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

集群规划


		hadoop101	hadoop102	hadoop103
		
HDFS	NameNode				SecondaryNameNode
		DataNode	DataNode	DataNode
								
YARN				ResourceManager
		NodeManager	NodeManager	NodeManager

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

修改配置文件

(1)配置Hadoop所使用Java的环境变量以及日志存储路径
	[offcn@hadoop101 hadoop]$ cd $HADOOP_HOME/etc/hadoop
	[offcn@hadoop101 hadoop]$ pwd
	/home/offcn/apps/hadoop-3.2.1/etc/hadoop

	[offcn@hadoop101 hadoop]$ vim hadoop-env.sh
	export JAVA_HOME=/home/offcn/apps/jdk1.8.0_144
	export HADOOP_LOG_DIR=/home/offcn/logs/hadoop-3.2.1


	【必选】
	export HDFS_NAMENODE_USER=offcn
	export HDFS_DATANODE_USER=offcn
	export HDFS_SECONDARYNAMENODE_USER=offcn
	export YARN_RESOURCEMANAGER_USER=offcn
	export YARN_NODEMANAGER_USER=offcn
 

 
(2)核心配置文件core-site.xml
	[offcn@hadoop101 hadoop]$ vim core-site.xml
	文件内容如下:
	<?xml version="1.0" encoding="UTF-8"?>
	<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
	
	<configuration>
	     <property>
	        <name>fs.defaultFS</name>
	        <value>hdfs://hadoop101:8020</value>
	    </property>
	    <property>
	        <name>hadoop.data.dir</name>
	        <value>/home/offcn/data/hadoop-3.2.1</value>
	    </property>
	    <property>
	        <name>hadoop.proxyuser.offcn.hosts</name>
	        <value>*</value>
	    </property>
	    <property>
	        <name>hadoop.proxyuser.offcn.groups</name>
	        <value>*</value>
	    </property>
	</configuration>
(3)HDFS配置文件
	配置hdfs-site.xml
	[offcn@hadoop101 hadoop]$ vim hdfs-site.xml
	文件内容如下:
	[offcn@hadoop101 hadoop]$ vim hdfs-site.xml
	<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
	<configuration>
		<property>
			<name>dfs.namenode.name.dir</name>
			<value>file://${hadoop.data.dir}/name</value>
		</property>
		<property>
			<name>dfs.datanode.data.dir</name>
			<value>file://${hadoop.data.dir}/data</value>
		</property>
		<property>
			<name>dfs.namenode.checkpoint.dir</name>
			<value>file://${hadoop.data.dir}/namesecondary</value>
		</property>
		<property>
			<name>dfs.client.datanode-restart.timeout</name>
			<value>30</value>
		</property>
		<property>
			<name>dfs.namenode.secondary.http-address</name>
			<value>hadoop103:9868</value>
		</property>
		<property>
			<name>dfs.permissions</name>
			<value>false</value>
		</property>
	</configuration>

(4)YARN配置文件
	配置yarn-site.xml
	[offcn@hadoop101 hadoop]$ vim yarn-site.xml
	文件内容如下:
	<?xml version="1.0" encoding="UTF-8"?>
	<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
	
	<configuration>
	    <property>
	        <name>yarn.nodemanager.aux-services</name>
	        <value>mapreduce_shuffle</value>
	    </property>
	    <property>
	        <name>yarn.resourcemanager.hostname</name>
	        <value>hadoop102</value>
	    </property>
	    <property>
	        <name>yarn.nodemanager.env-whitelist</name>
	        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	    </property>
	</configuration>
(5)MapReduce配置文件
	配置mapred-site.xml
	[offcn@hadoop101 hadoop]$ vim mapred-site.xml
	文件内容如下:
	<?xml version="1.0" encoding="UTF-8"?>
	<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
	
	<configuration>
	  <property>
	    <name>mapreduce.framework.name</name>
	    <value>yarn</value>
	  </property>
	</configuration>
(6)配置works(去掉localhost,添加如下内容)
	[offcn@hadoop101 hadoop]$ vim workers
	hadoop101
	hadoop102
	hadoop103
(7)在集群上分发配置好的Hadoop
	[offcn@hadoop101 apps]$ scp -r /home/offcn/apps/hadoop-3.2.1 hadoop102:$PWD
	[offcn@hadoop101 apps]$ scp -r /home/offcn/apps/hadoop-3.2.1 hadoop103:$PWD

	发送hadoop101的hadoop的环境变量配置文件到hadoop102和hadoop103
	sudo scp /etc/profile hadoop102:/etc/
	sudo scp /etc/profile hadoop103:/etc/
# 切记刷新配置文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123

11、集群启停及测试

1、单点启动
	(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!)
	在格式化时,要保证一切正常,不要出现错误、异常、或者提示让选择yes或者no;如果出现错误等情况,把所有的配置检查一遍确认无误后,将hadoop安装目录下的data、pid、logs目录删除重新格式化。
	[offcn@hadoop101 hadoop-3.2.1]$ hadoop namenode -format
 
2、集群群起启动
	(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!),操作方式详见单点启动。
	(2)启动HDFS
		[offcn@hadoop101 hadoop-3.2.1]$ start-dfs.sh
		Starting namenodes on [hadoop101]
		Starting datanodes
		Starting secondary namenodes [hadoop103]
 
	(3)在配置了ResourceManager的节点(hadoop102)启动YARN
		[offcn@hadoop102 hadoop-3.2.1]$ start-yarn.sh
		Starting resourcemanager
		Starting nodemanagers
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

12、 查看Web界面

# 首先关闭防火墙
查看防火墙状态systemctl status firewalld.service
关闭防火墙 systemctl stop firewalld.service
开机禁用防火墙 sudo systemctl disable firewalld.service
(1)查看Hdfs的Web界面
	浏览器输入地址:https://hadoop的ip地址:9870/
 (2)查看Yarn的Web界面
	浏览器输入地址:https://hadoop102:8088/
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Yarn启动报错
在这里插入图片描述

Error injecting constructor, java.lang.NoClassDefFoundError: javax/activation/DataSource
  at org.apache.hadoop.yarn.server.nodemanager.webapp.JAXBContextResolver.<init>(JAXBContextResolver.java:52)
  at org.apache.hadoop.yarn.server.nodemanager.webapp.WebServer$NMWebApp.setup(WebServer.java:153)
  while locating org.apache.hadoop.yarn.server.nodemanager.webapp.JAXBContextResolver


因为是JDK11的问题,参考解决:https://blog.csdn.net/tjcyjd/article/details/105631639
https://issues.apache.org/jira/browse/HADOOP-14978

官网说的不支持:
https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions

 

解决方法:
URL=https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar
wget $URL -P /home/xiaosi/apps/hadoop-3.2.1/etc/hadoop/lib
echo 'export HADOOP_CLASSPATH+=" /home/xiaosi/apps/hadoop-3.2.1/etc/hadoop /lib/*.jar"' >>/home/xiaosi/apps/hadoop-3.2.1/etc/hadoop/hadoop-env.sh


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

成功解决
在这里插入图片描述

13、Windows下 HDFS API搭建

要想在windows环境下进行hadoop开发,必须先将hadoop的源码下载下来进行编译,然后配置到环境变量里面,这里我们已经提前编译好了。

# 问题:在windows上做HDFS客户端应用开发,需要设置Hadoop环境,而且要求是windows平台编译的Hadoop,不然会报以下的错误:
# 缺少winutils.exe
Could not locate executable null \bin\winutils.exe in the hadoop binaries 
# 缺少hadoop.dll
Unable to load native-hadoop library for your platform… using builtin-Java classes where applicable 
  • 1
  • 2
  • 3
  • 4
  • 5

搭建步骤

  1. 将已经编译好的Windows版本Hadoop解压到到一个没有中文没有空格的路径下面

  2. 在windows上面配置hadoop的环境变量: HADOOP_HOME,并将%HADOOP_HOME%\bin添加到path中
    配置HADOOP_HOME
    在这里插入图片描述
    配置PATH目录
    在这里插入图片描述

  3. 把hadoop3.2.1文件夹中bin目录下的hadoop.dll文件放到系统盘: C:\Windows\System32 目录

二、springboot整合hdfs

创建maven工程导入pom文件,完整源码见github: https://github.com/sichaolong/spring-demo/tree/main/springboot-hdfs-demo

注意:如果报错sl4j错误,参考解决:报错8_引入Sl4j报错 Class path contains multiple SLF4J bindings.

# 创建一个Maven工程myhdfs
# 导入相应的依赖坐标+日志添加
<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>3.2.1</version>
    </dependency>
    # 如果springboot-start对应版本也存在依赖sl4j2,则会发生依赖冲突,排除一个即可
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>3.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>3.2.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
    </dependency>
</dependencies>

# 在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在文件中填入
	# 控制台输出配置
	log4j.appender.Console=org.apache.log4j.ConsoleAppender
	log4j.appender.Console.layout=org.apache.log4j.PatternLayout
	log4j.appender.Console.layout.ConversionPattern=%d [%t] %p [%c] - %m%n
	# 指定日志的输出级别与输出端
	log4j.rootLogger=DEBUG,Console

# 日志级别:
# OFF FATAL ERROR WARN INFO DEBUG TRACE ALL 
# ERROR>WARN>INFO>DEBUG




    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

日志工具的简单使用

package com.offcn.hdfs;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

public class MyLogger {

    public static void main(String[] args) {
        // Logger myloger = LogManager.getLogger("logname");
        Logger myloger = LogManager.getLogger(MyLogger.class);
        myloger.error("error");
        myloger.warn("warn");
        myloger.info("info");
        myloger.debug("debug");
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

三、过程JDK11各种报错解决

# 以下记录过程出现的错误及解决

1.	使用hadoop-java-api,安装hadoop-client客户端设置完之后,JDK11目录因为包含空格报错:
	解决参考:https://stackoverflow.com/questions/31621032/hadoop-on-windows-error-java-home-is-incorrectly-set

2. 可视化界面报错:Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error

	上传文件报错:Couldn't find datanode to write file. Server Error
	
	重启也没用,应该是JDK11版本的问题。。。修改hadoop-env.sh文件添加export HADOOP_OPTS="--add-modules java.activation"
	
	
	解决参考:https://stackoverflow.com/questions/48735869/error-failed-to-retrieve-data-from-webhdfs-v1-op-liststatus-server-error-wh,然后还是报错,最后修改配置文件为下面,才解决
 




3. Java-api上传文件报错但是文件夹也创建成功了:java.io.FileNotFoundException: Could not locate Hadoop executable: E:\hadoop-client\hadoop-3.2.1\bin\winutils.exe -see https://wiki.apache.org/hadoop/WindowsProblems

	解决:提示缺少winutils.exe,复制到bin目录即可
 

4. 日志依赖冲突hadoop-common中的slf4j-reload4j和spring-boot-starter中的logback-classic冲突,注释一个即可

  <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.2.1</version>
<!--            运行test模块要排除依赖-->
<!--            <exclusions>-->
<!--                <exclusion>-->
<!--                    <artifactId>slf4j-reload4j</artifactId>-->
<!--                    <groupId>org.slf4j</groupId>-->
<!--                </exclusion>-->
<!--            </exclusions>-->
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>3.2.1</version>
        </dependency>




        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75

对于报错2的可视化界面报错,解决参考
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/362469
推荐阅读
相关标签
  

闽ICP备14008679号