flume获取mysql日志到hdfs_Hadoop实战:Flume输入日志到HDFS报错解决

使用Flume把日志存储到HDFS,在启动时报错如下:

2017-06-16 08:58:32,634 (conf-file-poller-0) [ERROR - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:146)] Failed to start agent because dependencies were not found in classpath. Error follows.

java.lang.NoClassDefFoundError: org/apache/hadoop/io/SequenceFile$CompressionType

at org.apache.flume.sink.hdfs.HDFSEventSink.configure(HDFSEventSink.java:235)

at org.apache.flume.conf.Configurables.configure(Configurables.java:41)

at org.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:411)

at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:102)

at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:141)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:748)

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.io.SequenceFile$CompressionType

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 12 more

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

2017-06-1608:58:32,634(conf-file-poller-0)[ERROR-org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:146)]Failedtostartagentbecausedependencieswerenotfoundinclasspath.Errorfollows.

java.lang.NoClassDefFoundError:org/apache/hadoop/io/SequenceFile$CompressionType

atorg.apache.flume.sink.hdfs.HDFSEventSink.configure(HDFSEventSink.java:235)

atorg.apache.flume.conf.Configurables.configure(Configurables.java:41)

atorg.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:411)

atorg.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:102)

atorg.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:141)

atjava.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

atjava.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)

atjava.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)

atjava.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)

atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

atjava.lang.Thread.run(Thread.java:748)

Causedby:java.lang.ClassNotFoundException:org.apache.hadoop.io.SequenceFile$CompressionType

atjava.net.URLClassLoader.findClass(URLClassLoader.java:381)

atjava.lang.ClassLoader.loadClass(ClassLoader.java:424)

atsun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)

atjava.lang.ClassLoader.loadClass(ClassLoader.java:357)

...12more

其实这个报错信息真的不太友好,看不错哪里有问题。第一眼看上去一直以为是JAVA的classpath有问题,后来在网上看到一篇文章:安装Flume遇到的问题及解决,说是缺少Hadoop相关的jar包导致,想想也对。解决这个问题也很简单,就是在Flume主机上解压好Hadoop的二进制安装包,然后输出Hadoop环境变量即可,Flume会根据环境变量自动找到相关的依赖jar包。

由于我这里的Flume是独立安装,没有部署在Hadoop机器上,所以需要在Flume主机上安装一个Hadoop。

Hadoop二进制包下载自行去国内源或者官网搞定。

$ tar xvf hadoop-2.8.0.tar.gz -C /usr/local/

$ ln -sv /usr/local/hadoop-2.8.0/ /usr/local/hadoop

$ useradd hadoop

$ passwd hadoop

1

2

3

4

$tarxvfhadoop-2.8.0.tar.gz-C/usr/local/

$ln-sv/usr/local/hadoop-2.8.0//usr/local/hadoop

$useraddhadoop

$passwdhadoop

然后最主要的就是输出Hadoop环境变量,编辑环境配置文件/etc/profile.d/hadoop.sh,定义类似如下环境变量,设定Hadoop的运行环境。

#!/bin/bash

#

export HADOOP_PREFIX="/usr/local/hadoop"

export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

export HADOOP_COMMON_HOME=${HADOOP_PREFIX}

export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}

export HADOOP_YARN_HOME=${HADOOP_PREFIX}

1

2

3

4

5

6

7

8

#!/bin/bash

#

exportHADOOP_PREFIX="/usr/local/hadoop"

exportPATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

exportHADOOP_COMMON_HOME=${HADOOP_PREFIX}

exportHADOOP_HDFS_HOME=${HADOOP_PREFIX}

exportHADOOP_MAPRED_HOME=${HADOOP_PREFIX}

exportHADOOP_YARN_HOME=${HADOOP_PREFIX}

$ source /etc/profile

1

$source/etc/profile

再次运行Flume-ng就应该可以了。

另外,当Flume-ng正常运行后,写入HDFS时报错:java.lang.NoClassDefFoundError: org/apache/hadoop/io/SequenceFile$CompressionType

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=root, access=WRITE, inode=”/”:hadoop:supergroup:drwxr-xr-x.

这个提示很明显,就是没有写入权限(因为你当前运行flume-ng的用户不是Hadoop用户),解决方案也很简单,就是切换到Hadoop用户执行flume-ng命令即可。

$ chown hadoop.hadoop -R /usr/local/flume/

$ su - hadoop

$ flume-ng .....

1

2

3

$chownhadoop.hadoop-R/usr/local/flume/

$su-hadoop

$flume-ng.....

或者开启HDFS允许所有用户进行文件写入,默认可能你没有开启。需要在hdfs-site.xml配置文件中添加一项属性定义:

dfs.permissions

false

1

2

3

4

dfs.permissions

false

完结。。。

如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全球边缘计算大会:阿里云资深技术专家李克畅谈边缘计算的技术趋势与挑战

2020年11月7日,以“5G边缘计算“为主题的全球边缘计算大会在北京新世界大酒店成功召开,作为业内首个专门为边缘计算人打造的行业盛会,此次活动现场共有超过600来自政、产、学、研、用各界的企业负责人、权威技术专家、通信科技从业者、边缘计…

《科学:无尽的前沿》分享会在京举办,助力中国企业打造“科研的应许之地”

当今世界百年未有之大变局加速演进,疫情影响广泛深远,不稳定性不确定性明显增加。科技创新成为国际战略博弈的主要战场,围绕科技制高点的竞争空前激烈。 6月19日,远望智库、中信出版集团联合举办了新书《科学:无尽的前…

mysql 5.1 db2i_DB2 9.5.0.0升级至9.5.0.9(小版本升级)

0.升级前DB2版本[db2inst1xifenfei ~]$ db2levelDB21085I Instance "db2inst1" uses "32" bits and DB2 code release "SQL09050"with level identifier "03010107".Informational tokens are "DB2 v9.5.0.0", "s07100…

OpenYurt 深度解读:如何构建 Kubernetes 原生云边高效协同网络?

作者 | 郑超 导读:OpenYurt 是阿里巴巴开源的云边协同一体化架构,与同类开源方案相比,OpenYurt 拥有可实现边缘计算全场景覆盖的能力。在之前的一篇文章中,我们介绍了 OpenYurt 是如何在弱网和断网场景下实现边缘自治的。本文作为…

Dubbo-go 源码笔记(二)客户端调用过程

作者 | 李志信 导读:有了上一篇文章《Dubbo-go 源码笔记(一)Server 端开启服务过程》的铺垫,可以类比客户端启动于服务端的启动过程。其中最大的区别是服务端通过 zk 注册服务,发布自己的ivkURL并订阅事件开启监听&…

云原生时代需要什么样的存储系统?

导读:本文介绍了目前云原生环境下,支持有状态应用的几种典型存储方案的特点,并对市场主流的几个云原生存储产品实际测试性能进行对比。 现状 当前,云原生已经成为应用开发者在选择架构设计时的首选。云原生让应用开发者可以将所有…

mysql管理器源码_一个HelloWorld版的MySQL数据库管理器的设计与实现(源码)

2011年,实习期间写了一个简单的数据库管理器。今天,特意整理了下,分享给大家。有兴趣的同学,可以下载源码,瞧瞧。源码只有4个类:LoginGUI,DatabaseGUI,Record,MySQLModel。1.LoginGUI该类就是一个简单的登录…

我们身边的网络流量

作者:qinglianghu 一.网络流量中的善与恶 和我们一起在网上冲浪的不仅有你身边的亲朋好友,还有栖息在互联网上密密麻麻的网络爬虫。差不多每5次的网络浏览里,有2次是"虚假"的网络爬虫产生的。这些栖息在互联网上的爬虫也是有&quo…

58.3万笔/秒!看阿里的黑科技

简介: 11月11日0点刚过26秒,天猫双11的订单创建峰值就达到58.3万笔/秒,阿里云又一次扛住全球最大规模流量洪峰!58.3万笔/秒,这一数字是2009年第一次天猫双11的1457倍。数字的背后,隐藏着阿里巴巴很多不为人…

60+ 安全厂商的选择,为何 TA 一直坚持做威胁情报供应商?

威胁情报能给企业安全管理人员提供全面、准确、可执行和决策的信息,帮助企业提高应对安全威胁的效率,提升脆弱性管理和风险控制能力,了解其所处的威胁环境并用于决策。可以与企业已有的网络安全架构、产品、流程相整合,应用到 APT…

java方法重写_Java方法重写注意事项

1.重写方法的方法名和参数列表要和被重写方法一致。2.在 java 1.4版本以前,重写方法的返回值类型被要求必须与被重写方法一致,但是在java 5.0中放宽了这一个限制,添加了对协变返回类型的支持,在重写的时候,重写方法的返…

专访李飞飞 :从清华附中高材生到阿里飞刀,一口井钻出「云原生」

简介: 他初三上清华,如今是达摩院数据库首席科学家。李飞飞从学术界走向工业界,带领阿里云技术团队一手打造了云原生分布式数据库,让阿里「全面上云」的战役再下一城。今天,他用一口水井为我们道出了云原生&#xff01…

阿里雷卷:RSocket从入门到落地,RSocket让AJP换发青春

简介: 借助 RSocket 的架构提供,我们可以将之前比较复杂的方案简化,当然最最重要的是性能的提升,即便之前的一些性能提升技术点,可能由于一些约束等,现在和 RSocket 对接,那些问题都不存在啦&am…

英特尔拥抱开源,岂能没有杀手锏?

10 年前,Netscape 创始人、硅谷著名投资人马克安德森说“软件吞噬世界”,如今已发展为“开源吞噬世界”。据《2020年度 GitHub Octoverse 报告》显示,GitHub 上开发者数量达到 5600 万,新增 6000 万个存储库以及 19 亿个 contribu…

硬解析和软解析 mysql_Oracle学习之shared pool--硬解析和软解析

1.shared pool(共享池)的组成3块区域:free cache、library cache、row cachefree cache:空闲空间library cache:主要缓存SQL语句以及SQL语句对应的执行计划row cache:数据字典缓存select * from v$sgastat a where a.NAME librar…

Java全能手册火了!Redis/Nginx/Dubbo/Spring全家桶啥都有!

前言本文是为了帮大家快速回顾了Java中知识点,这套面试手册涵盖了诸多Java技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。本来想将文件上传到github上,但由于文件太大有的都无法显示所以…

java角度_java中角度或弧度的计算 | 学步园

math中调用tan()的反三角函数。应该表达为(角度/180度)* π(3.14) Math.atan((dpPoint.y-dpCenter.y) / (dpPoint.x-dpCenter.x))角度 Math.atan((dpPoint.y-dpCenter.y) / (dpPoint.x-dpCenter.x)) / π(3.14) * 180度计算三角形的任意一个角度// format的模板java.text.Deci…

云原生实时数仓首次在2020双11核心数据场景落地

简介: 这是史上数据量、计算量最大的一年,是实时处理要求最高、与机器智能结合性最强的一次双11,也是全球最大规模的一次云原生实践。背后作为数据核心支撑的大数据平台更是创下新的世界纪录。 刚刚结束的2020天猫双11又创下两项新记录&…

Flink + 强化学习搭建实时推荐系统

大家好,我叫许日花名欢伯,在2016年盒马早期的时候,我就转到了盒马的事业部作为在线数据平台的研发负责人,现在阿里云的计算平台负责DataWorks的建模引擎团队。今天的分享内容也来源于另一位嘉宾李启平(首义&#xff09…

MySQL 避坑指南之隐式数据类型转换

作者 | 不剪发的Tony老师责编 | 欧阳姝黎出品 | CSDN博客????知之为知之,不知为不知,是知也。——《论语》今天我们来聊聊 MySQL 中存在的隐式数据类型转换以及可能带来的问题。当两个不同类型的数据进行运算时,为了使得它们能够兼容&…