cloudera,cdh, hive,impala,Kerberos
Impala 认证现在可以通过 LDAP 和 Kerberos 联合使用来解决
Impala
是基于 Apache Hadoop 的一个开源的分析数据库,使用 Kerberos 和 LDAP 来支持认证 。Kerberos 在1.0版本中就已经被支持了,而 LDAP 是最近才被支持,在 CDH 5.2 中,你能够同时使用两者。
Kerberos
Kerberos 仍然是 Apache Hadoop 的主要认证机制。
- principal 是 Kerberos 主体,就要一个用户或者一个守护进程。对于我们来说,一个 principal 对于守护进程来说是name/[email protected],或者对于用户来说仅仅是[email protected]。
- name 字段可能是一个进程,例如impala,或者是一个用户名,例如 myoder`。
- hostname 可能是一个机器的全名称,或者是一个 Hadoop 定义的_HOST 字符串,通常会机器全名称自动替换。
- realm 类似于(但不必要和其一样)一个 DNS 域名
组合后比如:principal=impala/[email protected]
在 Impala 中对 Kerberos 基本的支持很简单:提供以下参数,守护程序将使用给定的主体和 key,在**表文件中验证所有通信的主体的身份。
--principal=impala/[email protected]
--keytab_file=/full/path/to/keytab
还有另一外一种情况是 Impala 守护进程(impalad)运行在一个负载均衡器下。
当客户端通过负载平衡器(一个代理)运行查询时,客户端期望 impalad 有一个和负载平衡器的名称的主体。所以当 Impalad 对外部查询提供服务时,需要使用一个和代理相同名称的主体,但是当做后台程序之间的通讯时需要一个主体匹配实际的主机名称
--principal=impala/proxy-[email protected]
--be_principal=impala/actual-[email protected]
--keytab_file=/full/path/to/keytab
第一个参数 --principal 定义 Impalad 服务外部查询时使用哪一个主体,–be_principal 参数定义 Impalad 进程之间通信时使用哪一个主体。两个主体的 key 必须存在于相同的 keytab 文件中。
调试 Kerberos
Kerberos是一个优雅的协议,但是当出现错误的时候实际的实现不是非常有帮助的。下面主要有两件事情需要检查,在出现认证失败的时候:
Time。Kerberos 是依赖于同步时钟,因此在所有使用 Kerberos 的机器上安装和使用 NTP(网络时间协议)是一个最佳实践。
DNS。请确保您的主机名是全名称的并且正向(名称 - > IP)和反向(IP->名称)DNS查找是否正确。
除此之外,也可以设置两个环境变量以输出 Kerberos 调试信息。输出可能是一小部分的内容,但通常是帮助你解决问题。
KRB5_TRACE=/full/path/to/trace/output.log:该环境变量指定调试日志输出路径。
JAVA_TOOL_OPTIONS=-Dsun.security.krb5.debug=true:该环境变量会传给 Impala 守护进程,并传递给内部的 java 组件。
Cloudera
Cloudera出售基于Hadoop的软件,也发布自家版本的Hadoop产品,帮助订阅客户管理数据
CDH
CDH是Apache Hadoop和相关项目的最完整,经过测试的流行发行版。 CDH提供了Hadoop的核心元素 - 可扩展的存储和分布式计算 - 以及基于Web的用户界面和重要的企业功能。 CDH是Apache许可的开放源码,是唯一提供统一批处理,交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。
Cloudera作为一个强大的商业版数据中心管理工具,提供了各种能够快速稳定运行的数据计算框架,如Apache Spark;使用Apache Impala做为对HDFS,HBase的高性能SQL查询引擎;也带了Hive数据仓库工具帮助用户分析数据; 用户也能用Cloudera管理安装HBase分布式列式NoSQL数据库;Cloudera还包含了原生的Hadoop搜索引擎以及Cloudera Navigator Optimizer去对Hadoop上的计算任务进行一个可视化的协调优化,提高运行效率;同时Cloudera中提供的各种组件能让用户在一个可视化的UI界面中方便地管理,配置和监控Hadoop以及其它所有相关组件,并有一定的容错容灾处理;
Hive概述
Hive数据仓库软件支持在分布式存储中读取,编写和管理大型数据集。使用与SQL非常相似的Hive查询语言(HiveQL),查询被转换为一系列作业通过MapReduce或Apache Spark在Hadoop集群上执行。
用户可以使用Hive运行批处理工作负载,同时还可以在单个平台内使用Apache Impala或Apache Spark等工具分析交互式SQL或机器学习工作负载的相同数据。
Hive组件
Hive由以下组件组成:
1\Metastore数据库
Metastore数据库是Hive基础架构的一个重要方面。它是一个独立的数据库,依赖于传统的RDBMS,例如MySQL或PostgreSQL,它保存有关Hive数据库,表,列,分区和Hadoop特定信息(例如底层数据文件和HDFS块位置)的元数据。
Metastore数据库由其他组件共享。例如,Hive和Impala都可以插入,查询,更改等相同的表。尽管您可能会看到对“Hive metastore”的引用,但请注意,即使在您未使用Hive本身的情况下,Metastore数据库也会广泛用于Hadoop生态系统。
Metastore数据库相对紧凑,数据快速变化。备份,复制和其他类型的管理操作会影响此数据库。
2\HiveServer2
HiveServer2是一个服务器接口,它使远程客户端能够向Hive提交查询并检索结果。它取代了HiveServer1(它已被弃用,并将在未来的CDH版本中被删除)。HiveServer2支持多客户端并发,容量规划控制,Sentry授权,Kerberos身份验证,LDAP和SSL,并为JDBC和ODBC客户端提供更好的支持。
HiveServer2是Hive执行引擎的容器。对于每个客户端连接,它会创建一个新的执行上下文,用于向客户端提供Hive SQL请求。它支持JDBC客户端,例如Beeline CLI和ODBC客户端。客户端通过基于Thrift API的Hive服务连接到HiveServer2。
Apache Impala概述
Impala 能够直接对Apache Hadoop平台中存储在HDFS,HBase 的数据提供快速的交互式SQL查询。除了使用相同的统一存储平台之外,Impala还使用与Apache Hive相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue中的Impala查询UI)。这为实时或面向批处理的查询提供了一个熟悉且统一的平台。
Impala是对可用于查询大数据的工具的补充。Impala不会取代基于MapReduce(如Hive)的批处理框架。基于MapReduce构建的Hive和其他框架最适合长时间运行的批处理作业,例如涉及批处理提取,转换和加载(ETL)类型作业的批处理作业。
Impala的好处
Impala提供:
数据科学家和分析师已经知道的熟悉的SQL接口。
能够在Apache Hadoop中查询大量数据(“大数据”)。
集群环境中的分布式查询,便于扩展并使用经济高效的硬件。
无需复制或导出/导入步骤即可在不同组件之间共享数据文件; 例如,使用Pig编写代码,使用Hive进行转换并使用Impala进行查询。Impala可以读取和写入Hive表格,使用Impala进行简单的数据交换,以便对Hive生成的数据进行分析。
用于大数据处理和分析的单一系统,因此客户可以避免昂贵的建模和ETL仅用于分析。
cdh MapReduce 查询和cloudera search 和impala search
CDH通过使用MapReduce作业为大数据集提供存储和访问,但创建这些作业需要技术知识,每个作业可能需要几分钟或更长时间才能运行。与MapReduce作业相关的较长运行时间会中断探索数据的过程。
为了提供更直接的查询和响应,并消除编写MapReduce应用程序的需要,可以使用Apache Impala。Impala以秒为单位返回结果,而不是分钟。
虽然Impala是一个快速,功能强大的应用程序,但它使用基于SQL的查询语法。使用Impala对于不熟悉SQL的用户可能会遇到挑战。如果您不知道SQL,则可以使用Cloudera Search。尽管Impala,Apache Hive和Apache Pig都需要在查询时应用的结构,但搜索支持对已编制索引的任何数据或字段进行*文本搜索。
Cloudera搜索和其他Cloudera组件
Cloudera搜索与其他Cloudera组件交互以解决不同的问题。下表列出了对搜索过程有贡献的Cloudera组件,并描述了它们如何与Cloudera Search进行交互:
上一篇: cdh4 hadoop,hive,impala,hbase本地库搭建及安装
下一篇: 函数