Windows下编程访问Hadoop(腾讯云上伪分布式部署)

时间:2020.9.24
课程:云计算基础
主要内容:①实现在腾讯云CentOS上伪分布式部署Hadoop2.9.2. ②实现在Windows下通过IDEA进行代码访问 ③此外,整理所参考的资料,详细介绍使用云服务器在安装部署中的坑点!
关键词:伪分布式Hadoop腾讯云Windows下代码通信IDEA

前言:本文侧重于安装配置完伪分布式后,实现在Windows下与服务器的代码通信,前期安装步骤略,尤其注重梳理报错问题。

一、腾讯云上安装Hadoop 2.9.2(伪分布式)

这一部分可以参考腾讯云官方教程:搭建 Hadoop 伪分布式环境

官方文档中侧重介绍了hdfs系统配置,有关yarn配置可以结合参考:CentOS下搭建Hadoop

相同的主要步骤(无差错)

  1. JDK安装及配置(CentOS自带,注意JAVA_HOME变量)
  2. Hadoop下载解压(此处新手注意,直接下载已编译版本,解压即可,官网 2.9.2-src 下载地址
  3. Hadoop伪分布式配置(core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,hadoop-env.sh)
  4. 修改一些启动环境变量(使用时更加方便,.bash_profile)
  5. 开放防火墙

!!注意的地方!!!

1. ip问题

在服务器上进行伪分布式安装,需要注意core-site.xml的ip地址分配!!

ip的几种配置

ip配置选择产生情况
localhost代码无法通信成功(未测试)
服务器公网ipNamenode无法启动×
服务器内网ip均正常
主机名需要主机名合法,同时修改服务器hosts文件,使其Listen外部机
内网ip配置

首先进入腾讯云的实例控制台,找到公网ip内网ip,如下图

腾讯云控制台
然后在Hadoop的core-site.xml中,配置hdfs的url为内网ip!!

可能报错问题:“java.net.BindException: Cannot assign requested address”

参考大神文档:我是千勾鱼-阿里云搭建Hadoop集群环境

公网ip问题

此处如果使用公网ip,则Namenode无法启动,Windows下无法访问50070的前端界面。

localhost

使用localhost可以实现在windows下打开Web页面,然而似乎无法通过代码访问进行操作链接。(未验证)

主机名

使用主机名需要注意修改服务器hosts文件,将主机名映射端口127.0.0.1改为0.0.0.0. 否则hadoop将只监听本机访问请求。

参考文档:Small-Young-Hadoop本地开发,9000端口拒绝访问
精髓在于 hdfs://localhost修改为别名,再通过hosts文件找到对应的0.0.0.0的ip

2. Datanode无法启动

多次格式化Namenode后可能出现datanode无法启动的问题,此时进入预先设置的data目录,与name目录,进入两者的current文件夹下,找到对应的VERSION文件,将datanode的clusterid修改为与namenode的clusteid一致,即可解决问题。

3. 没有权限进行操作

当dfs与yarn启动成功后,可以在windows处打开Web界面,然而通过web界面上传文件或新建文件夹均没有权限。此时需要在服务器处,配置最高权限。

$ hadoop fs -chmod -R 777 /

参考文档:海兰-运行hadoop常见错误及解决方法整理

二、服务器上直接操作Hadoop

1. 新建文件夹

2. 上传文件

3. 删除文件

三、Windows下代码访问Hadoop

新建maven项目,导入对应的hadoop包文件,编写代码。

log4j日志问题

添加log4j.properties 或者 添加代码

	public static void main(String[] args) throws Exception{
        BasicConfigurator.configure(); //自动快速地使用缺省Log4j环境。建议放到mian当中

参考文档:NBA首席形象大使阿坤-IDEA运行WordCount

WinUtil问题

需要在Windows下配置HADOOP_HOME
同时可以直接下载bin文件(https://github.com/srccodes/hadoop-common-2.2.0-bin),在解压后将/bin目录添加进环境变量Path。

参考链接: Win7下运行hadoop程序报Fail to locate….

无法访问hdfs

在服务器上修改主机名合法,CentOS修改主机名,否则可能提示Does not contain a valid host错误。
在windows中配置hosts文件,不可写入异常
在代码中添加配置,使Namenode返回Datanode的是主机名而不是内网ip

参考文档:外网无法访问hdfs解决方法

文件读取上传示例

其他

内网穿透实现访问

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值