启动Flume代理时找不到文件异常

时间:2015-06-03 12:51:45

标签: hadoop filenotfoundexception flume flume-ng

我第一次安装了Flume。我正在使用hadoop-1.2.1和flume 1.6.0

我尝试按照this guide设置水槽剂。

我执行了这个命令:$ bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template

它说log4j:ERROR setFile(null,true) call failed. java.io.FileNotFoundException: ./logs/flume.log (No such file or directory)

不是自动生成的flume.log文件吗?如果没有,我该如何纠正这个错误?

3 个答案:

答案 0 :(得分:2)

试试这个:

mkdir ./logs
sudo chown `whoami` ./logs
bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template

第一行在当前目录中创建logs目录(如果该目录尚不存在)。第二个将该目录的所有者设置为当前用户(您),以便{_ 1}}在您的用户可以写入时运行。

最后,请注意,这不是推荐使用Flume的方法,只是一个快速的黑客来尝试。

答案 1 :(得分:1)

您可能会收到此错误,可能是因为您是直接在控制台上运行命令,您必须首先进入排屑槽,然后尝试在控制台上运行命令。

This is the image for your reference

答案 2 :(得分:0)

正如@Botond所说,您需要设置正确的权限。

但是,如果您在程序中运行Flume,例如管理程序或使用自定义脚本,您可能希望更改默认路径,因为它相对于启动程序。 此路径在 /path/to/apache-flume-1.6.0-bin/conf/log4j.properties 中定义。在那里你可以改变线

package com.ge.health.poc.controller;

import java.io.IOException;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ge.health.model.JSONmodel;

@RestController
public class JSONSendController {

    @RequestMapping(value="/messagejson",method= RequestMethod.POST)
    @ResponseBody
    public void helloService(@RequestBody(required = false) String input) throws JsonParseException, JsonMappingException, IOException {            
        ObjectMapper mapper = new ObjectMapper();    
        JSONValidationClass validate=new JSONValidationClass();
        System.out.println("Service Says 123 - " + input);  
        boolean retValue = validate.isValidJSON(input);
        System.out.println("this is the value:"+retValue);
        JSONmodel pojodata = mapper.readValue(input, JSONmodel.class);
        System.out.println(pojodata);
        System.out.println(pojodata.toString());
    }
}

使用您想要使用的绝对路径 - 但您仍然需要正确的权限。