hadoop组件—面向列的开源数据库(四)—kettle抽入mongodb数据导入hbase

释放双眼,带上耳机,听听看~!

我们在前面的案例中已经使用kettle把数据导入到hive中。

本章我们来尝试把数据导入到hbase里。

参考链接:
https://wiki.pentaho.com/display/BAD/Loading+Data+into+HBase

kettle案例七连接hive–抽取mongodb的数据保存到hive

下载hadoop cluster配置文件

从服务器hadoop etc的配置文件中下载如下5个配置文件,覆盖kettle的plugins\pentaho-big-data-plugin\hadoop-configurations\hdp25中的5个同名文件。
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
hbase-site.xml

如果是CDH安装的Hadoop,hadoop etc的配置文件在服务器中的路径是/etc/hadoop/。如下:

hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

hbase etc的配置文件在服务器中的路径是/etc/hbase/。如下:

hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

放入路径如下:
D:\kettle\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp25
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

重启kettle新建hadoop cluster 连接

主对象树–》Hadoop clusters—》填写相关参数(根据上面4个配置文件填写配置的hostname 和端口号以及用户名密码,其中:Cluster Name 自定义集群名字;Hdfs Hostname为集群active Namenode ip,端口默认为8020;JobTracker为集群运用resource manager 权限的节点ip,端口默认为8032;ZooKeeper Hostname为对应节点ip,默认端口为2181;Oozie可不填。)
如图:
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase
HDFS的Hostname和Port在core-site.xml中,节点为fs.defaultFS。
如图:
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase
用户名密码使用可访问hdfs的用户名密码。

JobTracker的Hostname和Port在yarn-site.xml中,节点为yarn.resourcemanager.address.rm187。
如图:
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

Zookeeper的Hostname和Port在yarn-site.xml中,节点为yarn.resourcemanager.zk-address。
如图:
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

可能遇到的问题

the hadoop file system url does not match the url in the shims core-site.xml
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase
警告的原因是因为 配置的 url 与 xml 配置文件里面的 url 不一样
xml 里面用的 hostname 连接的,而我们配置的时候用的 ip,
将 ip 改为 hostname即可测试用过。
注意,用 hostname时,本地需要 添加 hosts 配置。
以windows添加hosts为例:
打开c:\windows\system32\drivers\etc文件夹找到hosts,右键使用管理员权限打开hosts文件,新增对应关系如下:
192.168.30.217 host217
192.168.30.250 host250
192.168.30.252 host252
192.168.30.251 host251
如图:
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

win+R输入cmd运行进入cmd模式检测host对应是否生效:

如图已生效
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

最终配置修改如下,测试成功:
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase
有一部分因为没有root账户密码权限的问题仍然错误,不过不影响,只要Hadoop File System Connection 没报错就行。
Ping Job Tracker/Resource Manager报错如果确认地址端口正确可以多测试几次,受网络影响。

新建流程

新建流程如下:
MongoDB Input—》Hbase Output
MongoDB Input在核心对象-Big Data目录。
Hbase Output在核心-对象Big Data目录。

通过MongoDB Input的方式,从mongodb数据库读取数据,然后通过Hbase Output将mongodb数据库的数据输出到hadoop的hbase表中。

配置MongoDB Input
MongoDB Input输入ip和端口以及数据库集合和获取字段。
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

在服务器hbase shell中新建表

配置Hbase Output
如果hadoop cluster配置了Zookeeper host则只需要选择Hadoop Cluster即可。

hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase
设计转换过程
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase
首先点击Get incoming fields获取上一步骤输入的字段。
把position设计为rowkey
rs作为rs列族的列,列名为rs。

注意,在这一步骤不能删除字段,否则会报错Cant find incoming field “{0}” defined in the mapping “{1}”

如果有多余字段则需要在上一步骤中处理好,确保hbase output的输入只有需要的字段即可。

Mapping name随便起名,我们这里起名为change。

注意,设计完成后选择Save mapping,而不是直接点击确定。

Save mapping之后点击确定。

又回到Configure connection中,选择Hbase name和Mapping name。

如图:
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

点击确定。

运行

脚本设计完成后点击保存,然后运行。
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

在hbase shell中使用命令全表扫描可以看到插入的数据:

如图:
hadoop组件---面向列的开源数据库(四)---kettle抽入mongodb数据导入hbase

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索