1. 概述
1.1 版本
FineDataLink 版本 | 功能说明 |
---|---|
4.0.11 | 支持使用Hadoop Hive (HDFS)写入数据 |
1.2 应用场景
FineDataLink 支持读取 Hadoop Hive 中的数据进行数据处理,但是直接通过Hive、Impala的接口写入数据性能不佳,因此 FDL 提供了Hive(HDFS) 写入数据。
本文将介绍如何连接 Hadoop Hive (HDFS)数据源。
2. 使用限制
由于 Hive 底层存储(HDFS)的限制,数据同步、数据转换-DB表输出中仅支持追加写入数据,不支持更新数据。
3. 准备工作
3.1 前提条件
详情请参见:前提条件
3.2 版本和驱动
下载驱动,并将其上传至 FineDataLink,如何上传可参见:驱动管理
注:在上传驱动包时,需要解压下面的「日志jar」文件,和驱动一起上传至 FineDataLink。
支持的数据库版本 | 驱动包下载 | 日志jar下载 |
---|---|---|
hive_1.1 | ||
Hadoop_Hive_1.2;hive2.3; hive2.1.2;hive2.1.1 |
3.3 收集连接信息
在连接数据库之前,请收集以下信息:
数据库所在服务器的 IP 地址和端口号;
数据库的名称;
若是用户名密码认证,需要收集用户名和密码;若是 Kerberos 认证,需要收集客户端 principal 和 keytab 密钥路径;
HDFS 文件系统地址(IP 地址和端口号)注:同时需要保证 FineDataLink 所在服务器能访问 HDFS 文件系统端口,例如 HDFS 文件系统默认端口为 8020,且服务器开启了防火墙,则需要参考下文开放 8020 端口。
Windows 系统开放端口步骤请参见:Windows服务器设置出入站规则
Linux 系统开放端口步骤请参见:Linux防火墙使用及配置
4. 具体连接步骤
1)管理员登录 FDL 工程,点击「管理系统>数据连接>数据连接管理」,选中某个文件夹后,新建数据连接。如下图所示:
2)设置数据连接名称(可同时修改数据连接所在目录)。如下图所示:
3)可根据数据源分类、支持形式、适配模块、数据源名称筛选数据库。如下图所示:
4)切换驱动为「自定义」选择 3.2 节上传的驱动,并输入 3.3 节收集的连接信息,如下图所示:
Kerberos 认证方式详情可参见:数据连接 Kerberos 认证
使用 Kerberos 认证需要注意以下事项:
连接前请检查 /etc/hosts 中的机器名对应 IP 是否为局域网 IP;
检查 /etc/hostname 中机器名设置和 /etc/hosts 中是否配置一致;
检查 FineDataLink 所在机器 hosts 配置的 IP+ 机器名是否正确;
本地连接时需要配置 /etc/hosts 文件,添加远端映射:IP+机器名,例如: 192.168.5.206 centos-phoenix 。
5)点击「测试连接」,若连接成功则「保存」该连接。如下图所示:
5. 使用数据源
6. 注意事项
6.1 问题描述
数据连接报错 org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x。
6.2 解决方案
6.2.1 解决方案1
Linux 环境:
在FDL服务端的 catalina.sh 里面指定新增变量声明:export HADOOP_USER_NAME = hdfs,指定连接 HDFS 的用户为 hdfs;
注:hdfs 可根据实际用户名修改。
Windows 环境:
在FDL服务端的 catalina.bat 里面指定新增变量声明:HADOOP_USER_NAME=hdfs,指定连接 HDFS 的用户为 hdfs;
注:hdfs 可根据实际用户名修改。
6.2.2 解决方案2(不推荐)
在不指定用户的情况下,连接HDFS时默认使用root账号,需要关闭HDFS用户验证,可能会带来安全隐患。因为该方案可让所有用户访问 hdfs,不用进入hdfs用户再执行命令。
注:CDH中没有这个配置,需要手动加进去。
步骤如下:
1)找到 hdfs-site.xml 的 HDFS 服务高级配置代码段(安全阀);
2)dfs.permissions.enabled 的值设置为 false,保存更改,重启 hdfs 。