• 沒有找到結果。

解决认证出现如下关键字:clock skew too great的问题 步骤1 检查集群时间。

步骤2 检查开发环境所在机器的时间,与集群时间的偏差应小于5分钟。

----结束

解决认证出现如下关键字:(Receive time out) can not connect to kdc server的问 题

步骤1 要检查“krb5.conf”文件内容是否正确,即是否与集群中的KerberoServer的业务IP配 置相同。

步骤2 检查Kerberos服务是否正常。

步骤3 检查防火墙是否关闭。

----结束

解决客户端应用提交任务到hadoop集群抛异常,提示Failed to find any Kerberos tgt 或者No valid credentials provided的问题

步骤1 检查是否执行了kinit,若未执行,则先执行kinit认证操作,再提交任务。

步骤2 多线程场景下,需要在进程的开始处调用hadoop提供的loginfromkeytab函数登录 KDC,得到TGT,后续提交任务之前,调用reloginFromKeytab 函数刷新该TGT。

//进程入口首次登录,登录成功设置userGroupInformation

UserGroupInformation.loginUserFromKeytab(this.userPrincipal,this.keytabFile);

//线程提交任务之前:

UserGroupInformation.getLoginUser().reloginFromKeytab();

步骤3 多个脚本同时使用kinit命令认证同一个用户的场景下,需要在各个脚本中执行kinit命 令之前,先执行export KRB5CCNAME=keytab_path命令,确保每个脚本进程中 KRB5CCNAME指向的路径不一致。

----结束

应用开发指南 5 安全认证

6 CQL 开发指南(安全模式)

6.1 概述

6.1.1 应用开发简介

本文档专供需要对Storm进行CQL二次开发的用户使用。本指南主要适用于具备SQL开 发经验和Java开发经验的开发人员。

CQL(Continuous Query Language), 持续查询语言, 用于数据流上的查询语言。

相对于标准的SQL,CQL加入了窗口的概念,使得数据可以一直保存在内存中,由此可 以快速进行大量内存计算,CQL的输出结果为数据流在某一时刻的计算结果。

CQL具有如下几个特点:

● 使用简单:CQL语法和标准SQL语法类似,只要具备SQL基础,都可以快速进行开 发。

● 功能丰富:CQL除了包含标准SQL的各类基本表达式等功能之外,还特别针对流处 理场景增加了窗口,窗口前过滤,窗口后过滤,并发度设置等功能,满足多种实 时业务处理场景。

● 易于拓展:CQL提供了拓展接口,以支撑日益复杂的业务场景,用户可以自定义 输入、输出、序列化、反序列化等并结合已有功能来满足灵活的业务场景。

● 易于调试:CQL提供了详细的异常码说明,降低了用户对于各种错误的处理难 度,提升了易用性。

6.1.2 常用概念

Window

窗口(window)是流处理中解决事件的无边界(unbounded)及流动性的一种重要手 段,把事件流在某一时刻变成静态的视图,以便进行类似数据库表的各种查询操作。

表达式

符号和运算符的一种组合,CQL解析引擎处理该组合以获取单个值。简单表达式可以 是常量、变量或者函数,可以用运算符将两个或者多个简单表达式联合起来构成更复 杂的表达式。

应用开发指南 6 CQL 开发指南(安全模式)

keytab文件

存放用户信息的密钥文件。应用程序采用此密钥文件在组件中进行API方式认证。

6.1.3 开发流程

本文档主要基于CQL Java API进行开发。

开发流程中各阶段的说明如图6-1和表6-1所示。

6-1 CQL 应用开发的流程图

6-1 CQL 应用开发的流程说明

阶段 说明 参考文档

了解基本概念 在开始开发应用前,需要

了解CQL的基本概念,了 解场景需求等。

常用概念

准备开发和运行环境 CQL的应用程序调用Java API进行开发。可使用 IntelliJ IDEA工具。

CQL的运行环境即Storm 客户端,请根据指导完成 客户端的安装和配置。

准备开发和运行环境

应用开发指南 6 CQL 开发指南(安全模式)

阶段 说明 参考文档

准备工程 CQL开发提供了样例工

程,您可以导入样例工程 进行程序学习。

配置并导入样例工程

根据场景开发工程 提供了样例工程,包括生

成随机数,根据条件统计 数据等。

开发程序

运行应用并查看结果 Storm样例程序是在Linux 环境下运行,需要将 IntelliJ IDEA中的代码打包 成jar包。

运行应用

6.2 环境准备

6.2.1 环境准备简介

本开发指南提供了Storm组件基于CQL的IntelliJ IDEA样例工程和常用接口说明,便于 开发者快速熟悉CQL开发。

开发环境准备分为应用开发客户端和应用提交客户端;应用开发提供了通过IntelliJ IDEA客户端提交应用程序的方式以及CQL Java API使用的实例程序,一般是在 Windows环境下进行;应用提交一般是在Linux环境下进行。

6.2.2 准备开发和运行环境