分享

Cloudera Flume认证实例

本帖最后由 pig2 于 2015-12-14 21:23 编辑
问题导读:



1.Flume认证实例如何设置?
2.如何测试认证正确?





1.Flume认证实例如何设置?
Flume作为最热门的Hadoop实时数据摄入 (data ingestion) 工具,已经被广泛接受并使用。如何在安全的环境中使用Flume?Kerberos的引入对Flume程序开发的影响究竟有多大?答案是:没有影响!当然运行的方式需要作简单的修改。

在该实例中,将利用Flume向HDFS以及Solr同时导入数据。
  • CDH集群已经开启Kerberos认证功能
  • 使用kadmin创建用户dol (全名为: dol@CDH.COM)
写flume-env.sh 全局配置文件: QQ截图20151214132228.png
首先设置Java程序运行的参数,指定flume进程可用内存的大小。如果要引入其他的依赖包,可以设置参数FLUME_CLASSPATH参数。

编写flume.conf 指定flume agent的源 (source)、槽 (sink)、渠道 (channel):
QQ截图20151214132240.png 在该配置文件中,定义了一个flume agent叫作“a1”。1个源以及3个槽。
源r1利用netcat监听在本地机器端口11300上。当有进程向该TCP监听端口发送消息时,r1会将消息复制3份,分别放入渠道c1、c2、c3中。
槽k1,使用log4j将接收到的消息直接打印到控制台上;槽k2,将接收到的消息追加写到HDFS文件中;槽k3,使用morphline对接收到的消息进行转化最终在solr中建立索引。

编写morphline.conf 对接收到的数据进行转化
QQ截图20151214132248.png
配置文件指定依次使用2个内置的morphline命令:
readCSV命令将读取一行数据,根据分隔符 (separator) 对数据进行切分,并映射到columns参数指定的列上。例如给定数据 “id1,hello”,经过readCSV命令后生成如下映射表:
[mw_shl_code=bash,true]{
id -> id1,
text -> hello
}[/mw_shl_code]loadSolr命令将数据以JSON格式发送到Solr服务器端建立索引。

编写完上述一系列文件后,就可以使用下述命令启动flume agent。
QQ截图20151214132256.png
但是在Kerberos环境下,当flume agent收到消息后,会使用k2、k3分别访问Kerberos’ed HDFS以及Kerberos’edSolr。但是flume agent本身没有任何Kerberos凭证,因此会出现一些与认证相关的错误,例如solr会报错:
HTTP Status 401 - Authentication required

因此需要为flume agent指定可用的认证信息,本例利用Kerberos Keytab(用于长时间运行的进程):
QQ截图20151214132301.png
上述命令将dol@CDH.COM用户的认证信息提取并添加到dol.keytab文件中。之后用户就可以使用该文件无密码登录Kerberos系统了(请妥善保管keytab文件)

编写jaas.conf设置认证参数
QQ截图20151214132307.png
该配置文件指定flume agent采用keytab认证方式:Kerberos principal名为dol@CDH.COM,keytab所在本地文件系统路径为 /home/dol/dol.keytab。

重写flume agent的运行命令,加入JAAS配置文件信息:
QQ截图20151214132313.png
2.如何测试认证正确

QQ截图20151214132320.png
使用nc命令,连接到flume agent的监听端口,输入id1,hello测试数据,查看flume agent的日志文件确保运行过程中没有出现任何错误。

验证HDFS
QQ截图20151214132326.png
确认数据已经写入HDFS (flume agent有权限创建相应目录与文件)。

验证Solr
QQ截图20151214132332.png
确认NRT索引正常工作,使用Solr REST API查询获得相关结果。



已有(1)人评论

跳转到指定楼层
a_zhen 发表于 2015-12-15 10:03:28
能用的地方还真多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条