前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0512-使用Python访问Kerberos环境下的HDFS

0512-使用Python访问Kerberos环境下的HDFS

作者头像
Fayson
发布2019-11-27 19:42:15
1.9K0
发布2019-11-27 19:42:15
举报
文章被收录于专栏:Hadoop实操Hadoop实操

1

文档编写目的

随着Hadoop平台的普及和Python语言的流行,使用Python语言访问操作HDFS的需要,Python也提供了多个访问HDFS的依赖包(如:pyhdfs、HdfsCLI、pywhdfs),这些依赖包都是通过API的方式与HDFS进行交互。本篇文章Fayson主要介绍使用pywhdfs访问Kerberos环境下的HDFS。

  • 内容概述:

1.环境准备

2.Python2示例代码

3.访问验证

4.总结

  • 测试环境:

1.操作系统:Redhat7.4

2.CM和CDH版本为5.15.0

3.Python 2.7.15

2

环境准备

Python访问HDFS需要安装相应的依赖包,这里Fayson选择了pywhdfs依赖包,该依赖包支持如下特性:https://bitbucket.org/suty/pyhdfs

  • 该库用于与WebHDFS和HTTPS Rest API交互
  • 支持安全(Kerberos,Token)和不安全的集群访问
  • 支持HA集群并兼容节点故障转移
  • 支持json格式配置集群
  • 支持在python shell上进行交互式访问HDFS
  • 支持HDFS联邦
  • 支持并发上传和下载

1.在命令行执行如下命令安装pywhdfs依赖

代码语言:javascript
复制
[root@cdh05 ~]# /opt/cloudera/anaconda2/bin/pip install pywhdfs

2.验证pywhdfs依赖包是否安装成功

代码语言:javascript
复制
[root@cdh05 ~]# /opt/cloudera/anaconda2/bin/pip show pywhdfs 

3

Pywhdfs命令行使用

pywhdfs支持在命令行通过WebHDFS进行交互式的访问及操作HDFS,pywhdfs命令行访问HDFS通过json文件来定义集群的配置信息,默认的配置文件在~/ .webhdfs.cfg目录下,也可以通过WEBHDFS_CONFIG环境变量来覆盖默认的配置。

1.在当前目录下创建一个webhdfs.cfg配置,内容如下

代码语言:javascript
复制
[root@cdh05 python_code]# vim webhdfs.cfg
{
  "clusters": [
    {
      "name": "test-prod",
      "auth_mechanism": "GSSAPI",
      "verify": false,
      "nameservices": [
        {
          "urls": ["http://cdh1.fayson.com:50070" , "http://cdh2.fayson.com:50070"],
          "mounts": ["/"]
        }
       ]
    }
  ]
}

注意:name和urls两个属性,name属性在命令行运行时需要指定,否则会报错。

2.在命令行运行如下命令进入python shell交互式界面

代码语言:javascript
复制
[root@cdh05 python_code]# kinit hiveadmin@FAYSON.COM
[root@cdh05 python_code]# export WEBHDFS_CONFIG=/data/disk1/python_code/webhdfs.cfg
[root@cdh05 python_code]# /opt/cloudera/anaconda2/bin/pywhdfs -c test-prod

3.在交互式命令行运行CLIENT.list("/")浏览HDFS跟路径下所有目录

更多操作方式,大家可以参考pywhdfs官网。

4

Pywhdfs API使用

1.编写python示例代码访问Kerberos环境下的HDFS,示例代码如下

代码语言:javascript
复制
[root@cdh05 ~]# vim python_hdfs.py 
import pywhdfs.client as pywhdfs

CLIENT = pywhdfs.WebHDFSClient(nameservices=[{'urls':["http://cdh1.fayson.com:50070","http://cdh2.fayson.com:50070"],'mounts':['/']}], auth_mechan
ism="GSSAPI", verify=False)

print(CLIENT.list("/"))

2.在命令行执行如下命令运行python_hdfs.py文件

代码语言:javascript
复制
[root@cdh05 python_code]# kinit hiveadmin
[root@cdh05 python_code]# /opt/cloudera/anaconda2/bin/python python_hdfs.py

5

总结

1.pywhdfs依赖包支持的Python环境有2.6、2.7、3.3、3.4

2.访问Kerberos环境下的HDFS,需要安装gssapi依赖包,使用pip方式安装即可。

3.pywhdfs支持python shell交互方式访问HDFS,同时也支持使用API方式访问HDFS。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档