时间:2020.9.24
课程:云计算基础
主要内容:①实现在腾讯云CentOS上伪分布式部署Hadoop2.9.2. ②实现在Windows下通过IDEA进行代码访问 ③此外,整理所参考的资料,详细介绍使用云服务器在安装部署中的坑点!
关键词:伪分布式Hadoop , 腾讯云, Windows下代码通信,IDEA
前言:本文侧重于安装配置完伪分布式后,实现在Windows下与服务器的代码通信,前期安装步骤略,尤其注重梳理报错问题。
本文为原创文章,转载务必注明出处!
一、腾讯云上安装Hadoop 2.9.2(伪分布式)
这一部分可以参考腾讯云官方教程:搭建 Hadoop 伪分布式环境
官方文档中侧重介绍了hdfs系统配置,有关yarn配置可以结合参考:CentOS下搭建Hadoop
相同的主要步骤(无差错)
JDK安装及配置
(CentOS自带,注意JAVA_HOME变量)Hadoop下载解压
(此处新手注意,直接下载已编译版本,解压即可,官网 2.9.2-src 下载地址)Hadoop伪分布式配置
(core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,hadoop-env.sh)修改一些启动环境变量
(使用时更加方便,.bash_profile)开放防火墙
!!注意
的地方!!!
1. ip问题
在服务器上进行伪分布式安装,需要注意core-site.xml的ip地址分配!!
ip的几种配置
ip配置选择 | 产生情况 | |
---|---|---|
localhost | 代码无法通信成功(未测试) | |
服务器公网ip | Namenode无法启动 | × |
服务器内网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
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解决方法