博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows 访问 HDFS
阅读量:6928 次
发布时间:2019-06-27

本文共 1280 字,大约阅读时间需要 4 分钟。

  hot3.png

缘起

一天,有人问我,能用windows建一个客户端,来访问hadoop的hdfs文件系统吗? 直觉告诉我,应该可以,不就是一个hadoop客户端吗?hadoop都是java代码,理论上应该能用 。 不过,还是要试验一下,才能确认。

环境

我手头刚好有个cdh环境,而且还做了kerberos身份验证,同时我所用的windows机器和CDH所用的AD不在同一个域,难度有点大。不过基本原理还是很清楚的,无非就是客户端先通过kinit拿到本地令牌,然后再访问hadoop呗。

步骤

  1. 下载hadoop软件包,apache官网,2.6的二进制版。

  2. hadoop软件包 解压缩后,假设放在d:\hadoop

  3. 下载winutil.exe, , 放在d:\hadoop\bin下

  4. 从CDH集群下载hadoop配置信息,主要是集群内/etc/hadoop/conf目录,假设文件夹名为conf。将conf文件夹放在d:\hadoop\etc下,并重命名为hadoop。如果之前有同名目录存在,这将之前的hadoop目录改名即可。

  5. 从CDH集群下载kerberos配置信息,主要是集群内/etc/krb5.conf文件。将该文件放在d:\hadoop\krb5下。

  6. 设置环境变量

    set JAVA_HOME=d:\jdk1.8  set HADOOP_HOME=d:\hadoop  set KRB5CCNAME=d:\hadoop\krb5cache  set PATH=%PATH%;%JAVA_HOME%\bin;%HADOOP_HOME%\bin  set JAVA_TOOL_OPTIONS=-Dsun.security.krb5.debug=true -D"java.security.krb5.conf=d:\hadoop\krb5\krb5.conf"  #引号必须加。
  7. 执行%JAVA_HOME%\bin\kinit.exe 。由于我所用的windows机器已经加入到tom域,而CDH对应的AD域控域名为jerry。直接执行kinit是不行的,会默认去tome域认证。好在也有方法:

    kinit.exe -J-Dsun.security.krb5.debug=true -J-D"java.security.krb5.conf=d:\hadoop\krb5\krb5.conf" mac

这样一来,kinit就会使用我们指定的conf文件来验证身份,也会找到指定的jerry域了。

  1. 在执行kinit过程中,还提示了一个错误,就是AD服务器和windows客户端之间,加密算法类型不匹配。这个也没有关系,方法如下:

    #修改d:\hadoop\krb5\krb5.conf文件在[libdefaults]下新增:default_tkt_enctypes = arcfour-hmac-md5#强制指定使用双方都支持的加密算法
  2. 执行hdfs dfs -ls /,成功!

转载于:https://my.oschina.net/pearma/blog/1549860

你可能感兴趣的文章
OC内存管理--对象的生成与销毁
查看>>
你的git项目需要一个高质量的README
查看>>
任意形状的ImageView
查看>>
为方便引入svg,把所有的svg,node生成一个js
查看>>
react面试题 机试题
查看>>
AQS之Condition实现分析
查看>>
EOS bug 频出,到底是何原因?
查看>>
小程序总结
查看>>
隐式, 显式, 鸭子类型
查看>>
谈谈对Python爬虫的理解
查看>>
最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁
查看>>
成为专业程序员路上用到的各种优秀资料、神器及框架
查看>>
Particle System粒子
查看>>
Linux脚本(shell)编程(四) 判断条件
查看>>
PXE一键安装脚本
查看>>
第五周作业
查看>>
游戏版本更新出错排查
查看>>
Android控件Gridview实现多个menu模块,可添加可删除
查看>>
Alike保护XenServer服务器的利器!
查看>>
linux的进程通信:信号量实例(C语言)
查看>>