首页 > 系统相关 >大数据开发-解决Windows下,开发环境常遇的几个问题

大数据开发-解决Windows下,开发环境常遇的几个问题

时间:2023-09-03 19:11:39浏览次数:46  
标签:Windows ip xxx 常遇 hadoop 开发 datanode spark 序列化

发士大夫

大数据开发-解决Windows下,开发环境常遇的几个问题

1.背景

大数据开发的测试环境,很多人不以为然,其实重复的打包,上传,测试虽然每次时间大概也就几分钟,但是积累起了往往会花费很多的时间,但是一个完整的测试环境在生产环境下往往难形成闭环,抛开堡垒机权限不说,hadoop,hive,spark等服务端的权限也会难倒一群英雄好汉,主要是太繁琐了,测试环境的搭建,我这里采用Docker容器,适合多端迁移,而且容器的镜像大小也比虚拟机小很多,难度上说,也只需要掌握几个基础的命令即可,除非想引入K8s等技术,但测试环境完全没必要,Docker环境搭建大数据平台的系列从这里大数据开发-Docker-使用Docker10分钟快速搭建大数据环境,Hadoop、Hive、Spark、Hue、Kafka、ElasticSearch.....[https://blog.csdn.net/hu_lichao/article/details/112125800](https://blog.csdn.net/hu_lichao/article/details/112125800 "https://blog.csdn.net/hu_lichao/article/details/112125800"),环境搭建好了,可能还是会有一些特殊的问题

2.如何解决缺失winutils.exe

在Win操作系统,idea下开发hadoop程序或者Spark程序,那么你肯定会遇到下面的问题

大数据开发-解决Windows下,开发环境常遇的几个问题

1.背景

大数据开发的测试环境,很多人不以为然,其实重复的打包,上传,测试虽然每次时间大概也就几分钟,但是积累起了往往会花费很多的时间,但是一个完整的测试环境在生产环境下往往难形成闭环,抛开堡垒机权限不说,hadoop,hive,spark等服务端的权限也会难倒一群英雄好汉,主要是太繁琐了,测试环境的搭建,我这里采用Docker容器,适合多端迁移,而且容器的镜像大小也比虚拟机小很多,难度上说,也只需要掌握几个基础的命令即可,除非想引入K8s等技术,但测试环境完全没必要,Docker环境搭建大数据平台的系列从这里大数据开发-Docker-使用Docker10分钟快速搭建大数据环境,Hadoop、Hive、Spark、Hue、Kafka、ElasticSearch.....[https://blog.csdn.net/hu_lichao/article/details/112125800](https://blog.csdn.net/hu_lichao/article/details/112125800 "https://blog.csdn.net/hu_lichao/article/details/112125800"),环境搭建好了,可能还是会有一些特殊的问题

2.如何解决缺失winutils.exe

在Win操作系统,idea下开发hadoop程序或者Spark程序,那么你肯定会遇到下面的问题

之所以出现上面的问题,Spark程序和Hadoop在idea写编写的程序是依赖hadoop的环境的,所以要提前配置好,并且设定HADOOP_HOME​ ,不一定需要$HADOOP_HOME/bin​ 到PATH​ ,后者是给快捷方式用的

注意:配置完环境变量后要将idea,退出后重进,不能Restart

3.如何解决java.lang.NoSuchMethodError: org.apache.hadoop.security.authentication.util.KerberosUtil.hasKerberosKeyTab(Ljavax/security/auth/Subject;)Z

错误如下图

出现这个问题的原因是版本冲突,即使看起来不那么明显,可能是spark依赖的包中的hadoop和hadoop依赖的版本不一致https://stackoverflow.com/questions/45470320/what-is-the-kerberos-method,具体不一致的问题,可能各有不同,解决难易程度因人而异,我的解决方式就是exclude​掉spark​的低版本hadoop

4.如何解决Exception in thread "main" org.apache.spark.SparkException: Task not serializable

这个问题,我是这么遇到的,如下程序:

// results.foreach(System.out::println); //输出没有序列化
   results.foreach(x -> System.out.println(x));

首先foreach​是action算子,需要将task上的数据拉到driver上来遍历显示,就需要序列化,如果习惯了Java的lambda写法,可能会写第一种,第一种写法的问题是没有序列化,序列化是在闭包里完成的,而使用静态方法调用的方式,没有闭包化,所以会报序列化的问题,写成第二种就可以了,System.out是一个final static​对象。

  public final static PrintStream out = null;

5.Failed to connect to /xxx.xxx.xxx:50010 for block, add to deadNodes and continue

用java通过api读取hdfs上面的文件是,出现了Failed to connect to /xxx.xxx.xxx:50010 for block, add to deadNodes and continue

这是由于本地测试和服务器不在一个局域网,安装的hadoop配置文件是以内网ip作为机器间通信的ip.在这种情况下,我们能够访问到namenode机器,namenode会给我们数据所在机器的ip地址供我们访问数据传输服务,但是返回的的是datanode内网的ip,我们无法根据该IP访问datanode服务器.让namenode返回给我们datanode的域名,在开发机器的hosts文件中配置datanode对应的外网ip和域名,并且在与hdfs交互的程序中添加如下代码即可Configuration conf = new Configuration(); ​

//设置通过域名访问datanode conf.set("dfs.client.use.datanode.hostname", "true");

之所以出现上面的问题,Spark程序和Hadoop在idea写编写的程序是依赖hadoop的环境的,所以要提前配置好,并且设定HADOOP_HOME​ ,不一定需要$HADOOP_HOME/bin​ 到PATH​ ,后者是给快捷方式用的

注意:配置完环境变量后要将idea,退出后重进,不能Restart

3.如何解决java.lang.NoSuchMethodError: org.apache.hadoop.security.authentication.util.KerberosUtil.hasKerberosKeyTab(Ljavax/security/auth/Subject;)Z

错误如下图

出现这个问题的原因是版本冲突,即使看起来不那么明显,可能是spark依赖的包中的hadoop和hadoop依赖的版本不一致https://stackoverflow.com/questions/45470320/what-is-the-kerberos-method,具体不一致的问题,可能各有不同,解决难易程度因人而异,我的解决方式就是exclude​掉spark​的低版本hadoop

4.如何解决Exception in thread "main" org.apache.spark.SparkException: Task not serializable

这个问题,我是这么遇到的,如下程序:

// results.foreach(System.out::println); //输出没有序列化
   results.foreach(x -> System.out.println(x));

首先foreach​是action算子,需要将task上的数据拉到driver上来遍历显示,就需要序列化,如果习惯了Java的lambda写法,可能会写第一种,第一种写法的问题是没有序列化,序列化是在闭包里完成的,而使用静态方法调用的方式,没有闭包化,所以会报序列化的问题,写成第二种就可以了,System.out是一个final static​对象。

  public final static PrintStream out = null;

5.Failed to connect to /xxx.xxx.xxx:50010 for block, add to deadNodes and continue

用java通过api读取hdfs上面的文件是,出现了Failed to connect to /xxx.xxx.xxx:50010 for block, add to deadNodes and continue

这是由于本地测试和服务器不在一个局域网,安装的hadoop配置文件是以内网ip作为机器间通信的ip.在这种情况下,我们能够访问到namenode机器,namenode会给我们数据所在机器的ip地址供我们访问数据传输服务,但是返回的的是datanode内网的ip,我们无法根据该IP访问datanode服务器.让namenode返回给我们datanode的域名,在开发机器的hosts文件中配置datanode对应的外网ip和域名,并且在与hdfs交互的程序中添加如下代码即可Configuration conf = new Configuration(); ​

//设置通过域名访问datanode conf.set("dfs.client.use.datanode.hostname", "true");

标签:Windows,ip,xxx,常遇,hadoop,开发,datanode,spark,序列化
From: https://www.cnblogs.com/hulichao/p/scholar-z23igvg.html

相关文章

  • 高效的开发技巧
    为提升开发效率,HBuilderX将 uni-app 常用代码封装成了以 u 开头的代码块,如在 template 标签内输入 ulist 回车,会自动生成如下代码:<uni-list> <uni-list-itemtitle=""note=""></uni-list-item> <uni-list-itemtitle=""note=""></uni-lis......
  • Windows与网络基础——虚拟机镜像相关
    1.虚拟机Windows10安装硬盘分区时,先新建分区,再格式化在启动此电脑——管理——本地用户和组 向下箭头代表为禁用开机状态快照占用内存大于关机状态快照2.虚拟机WindowsServer2016安装要桌面的话,需要选择桌面体验版Server版本的WINDOWS需要给管理员设置密码,且具备复杂性,......
  • Windows下编译FFmpeg
    Windows下在编译前需要修改环境变量,确保有这两个变量INCLUDE以及PKG_CONFIG_PATH除此之外,我们还对编出来的库有些其它要求,例如,库名中不能有版本号相关的信息,修改configurewin32|win64)disablesymverifenabledshared;then#Linktot......
  • 华为云Classroom赋能 | Devstar使应用开发无需从零开始
    华为云DevStar为开发者提供业界主流框架代码初始化能力,通过GUI、API、CLI等多种方式,将按模板生成框架代码的能力推送至用户桌面。同时基于华为云服务资源、成熟的DevOps开发工具链和面向多场景的众多开发模板,提供一站式创建代码仓、自动生成框架代码、创建编译构建、测试、部署等流......
  • 华为云classroom赋能|tookIT助力开发者上云
    对于资深程序员而言,IDE是必不可少的,它好比是剑客手中的宝剑,IDE帮助程序员更快更丝滑的去编程,同时插件就是这把剑上的各种Buff,为宝剑赋能,提供更好的升级打怪体验。什么是HuaweiCloudToolkitHuaweiCloudToolkit中文名是华为云开发者插件,是基于华为云现有能力的一系列插件集合,简单......
  • 关于裸机开发和Linux开发Q&A
    一、嵌入式应用开发,选哪些单片机选择哪些单片机,需要根据具体的应用需求、性能要求和开发难度等综合因素来进行评估。以下是一些常用的嵌入式操作系统所支持的单片机类型,供参考:ARMCortex-M系列:这是一个广泛使用的嵌入式处理器体系结构,支持多种硬件平台和软件框架。Corte......
  • 设置Windows10暂停更新3000天
    1、运行cmd,执行以下命令:regadd“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings”/vFlightSettingsMaxPauseDays/treg_dword/d3000/f2、到更新设置里面设置暂停更新:   ......
  • 微信小程序开发部署发布流程
    微信小程序开发部署发布流程最近因为有比赛,所以在进行敏捷小程序开发,由于我比较菜,不会JS原生,所以选择了符合技术栈的技术路线。MPFlutter框架+dart语言的开发。这样就可以符合“同时产出小程序与APP”的需求。1.微信小程序申请微信公众平台(qq.com)进行申请,注册,认证。按照......
  • 近期项目开发的得与失
     笔者从两年前进入公司开始,参与一个软件系统从立项、调研、启动、开发、暂停的全过程。说是暂停,实际上在可预见的未来,该项目都将被封存,这是一次失败的尝试。在立项启动以后,该项目开发进度缓慢,最主要的是,目标不明确,而且变现难度极大。在项目进度后期,大概项目喊停的半年前,笔......
  • Apollo开发指南
    一、准备工作二、本地启动2.1ApolloConfigService和ApolloAdminService2.2Apollo-Portal2.3Java样例客户端启动2.4.Net样例客户端启动三、开发3.1Portal实现用户登录功能3.2Portal接入邮件服务本文档介绍了如何在本地使用IDE编译、运行Apollo,从而可以帮助大家了解Apollo......