使用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

完结。。。

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

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

  1. mysql 存储微信昵称乱码_MYSQL 保存微信昵称特殊字符报错解决方法-设置编码集为utf8mb4的方法...

    mysql utf8mb4 保存微信昵称特殊字符报错方法 公众号二次开发,在处理用户昵称的时候发现有的时候一些emoji是4字节的表情无法保存入库,经过查找资料发现是因为字段的编码问题造成的, utf ...

  2. mysql安装步骤傻瓜式教学及MSVCR120.dll问题报错解决

    一.下载安装包: 安装的目录应当放在指定位置,其次,绝对路径中避免出现中文,推荐首选英文为命名条件!(有中文也可以)安装包我放在网盘了,需要自取 百度网盘链接:https://pan.baidu.co ...

  3. MySQL could not be resolved: Temporary failure in name resolution报错解决方法

    最近几天研发总是抱怨用Navicat连接MySQL数据库和打开数据表很慢,登录数据库分析,查看错误日志: mysql> show variables like 'log_error'; +--- ...

  4. mysql 主库down机_MySQL从库服务器down机报错Could not parse relay log event entry

    环境介绍: 最近网站总是出问题,因为play服务总是跑着跑着就死了,于是经理尝试把play跑在我的MySQL这两台服务器上(因为这两台服务器的资源很空闲),可是没想到才跑了半天,就把服务器的128G内 ...

  5. Linux下MySql插入汉字报错解决(/etc/my.cnf不存在)

    2019独角兽企业重金招聘Python工程师标准>>> Linux下MySql插入汉字报错解决(/etc/my.cnf不存在) 看了很多帖子,大多数是说修改my.cnf,如 http ...

  6. mysql -u 报错_MySQL报错解决!

    大家好:我是小狼,最近工作一直瞎忙,没时间写东西,终于有点时间了,现在我正在搭建extmail服务器,文档是参考这里:http://www.extmail.org/forum/thread-7002- ...

  7. please reinstall the mysql distribution_php安装扩展mysqli的实现步骤及报错解决办法

    php安装扩展mysqli的实现步骤及报错解决办法 terminal#cd php-5.3.6/ext/mysqli #/usr/local/webserver/php/bin/phpize #./c ...

  8. IDEA 2020.3 连接mysql数据库报错解决

    IDEA 2020.3 连接mysql数据库报错解决 问题: Cannot connect to "Connection". The server time zone value ...

  9. Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法

    Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法. 一个Java老项目,更新了日志工具,升级为Log4j2,在引入log4j-api-2.14.0.jar 和log4j-core-2. ...

最新文章

  1. HDU1753 大明A+B(大数相加)(Java题解)
  2. ecplice中class.forname一直报错_Python怎么把文件内容读取出来,怎么把内容写入文件中
  3. 前端学习(3195):虚拟dom的创建方式1的js
  4. epoll模型之服务器设计
  5. SpringBoot视频教程
  6. TCP TIME_WAIT 详解
  7. java 拟合曲线_如何通过指数曲线拟合数据
  8. maven仓库--私服(Nexus的配置使用)
  9. K8S-删除Terminating状态的namespace
  10. 从智能家居的发展看对讲企业的定位
  11. 不定式和分词作状语的区别
  12. siteground主机黑五优惠最低2折-2.99美元每月-vps主机-WordPress主机服务器
  13. 英雄联盟修改服务器封3年,LOL自定义也被封三年 竟然因为这个原因?
  14. springboot 实现 订单 和 微信扫码支付 功能
  15. 睡前必备神器——倒计时定时关闭手机音乐声音APP
  16. 3D变电站vr建模三维展示可视化管理系统
  17. 【璟丰机电】美国派克Parker产品在FPD中的行业应用案例盘点
  18. 《Java SE实战指南》10:特性修饰符
  19. python枚举窗口句柄_如何使用 WIN32 API 枚举窗口?
  20. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?...

热门文章

  1. 认清一个人,看这四点就够了
  2. Offer年薪低于25W全额退款|阿里、腾讯内推快艇《全链路大数据分析工程师》课程招生简章...
  3. mysql xp系统时间_mysql时间类型year
  4. 文件字符串变量插入linux,Linux Shell脚本实现在文件指定的行插入字符串
  5. 原始Dao开发方法以及存在的问题
  6. Linux 、shell 时间函数 - 获取七天前所在周
  7. KubeVela v1.3 多集群初体验,轻松管理应用分发和差异化配置
  8. ​如何让技术想法更容易被理解?
  9. AliExpress智能营销引擎大揭秘 - AnalyticDB如何做到快准狠省
  10. 阿里云荣获可信云容器安全能力先进级认证, ACK/ACR为企业级安全护航