记录一下搭建Hadoop3集群的配置和遇到的一些问题

记录一下搭建Hadoop3集群的配置和遇到的一些问题,第1张

记录一下搭建Hadoop3集群配置和遇到的一些问题 背景

虚拟机centos7系统3台,hadoop v3.2.1,分别设置了固定ip已经hostname:hadoop101,hadoop102,hadoop103,并设置ssh免密码登录。

开发环境windows10,idea2020

hdfs:

        hadoop101:namenode、dataname

        hadoop102:secondary-namenode、datanode、zookeeper

        hadoop103:datanode

yarn:

        hadoop101:resource-manager(rm1)、nodemanager

        hadoop102:nodemanager

        hadoop103:resource-manager(rm2)、nodemanager

最终配置文件

core-site.xml


    
        fs.defaultFS
        hdfs://hadoop101:9000
    

    
        hadoop.tmp.dir
        /tmp/my-hadoop/
    



  hadoop.http.staticuser.user
  hadoop

hdfs-site.xml


    
        dfs.replication
        2
    

    
        dfs.namenode.secondary.http-address
        hadoop102:50090
    

    
    
        dfs.permissions.enabled
        false
    

   
    
        dfs.namenode.http-address
        hadoop101:9870
    

yarn-site.xml




    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    


    
        yarn.nodemanager.env-whitelist
        JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
    

    
    yarn.resourcemanager.ha.enabled
      true
    
    
      yarn.resourcemanager.cluster-id
      cluster1
    
    
      yarn.resourcemanager.ha.rm-ids
      rm1,rm2
    
    
      yarn.resourcemanager.hostname.rm1
      hadoop101
    
    
      yarn.resourcemanager.hostname.rm2
      hadoop103
    

   yarn.resourcemanager.webapp.address.rm1
   hadoop101:8088


   yarn.resourcemanager.webapp.address.rm2
   hadoop103:8088




    
      yarn.resourcemanager.zk-address
      hadoop102:2181
      ZooKeeper服务的地址,多个地址使用逗号隔开
    

    
         yarn.nodemanager.resource.memory-mb
         1024
    
    
         yarn.nodemanager.resource.cpu-vcores
         1
    

mapred-site.xml


    
        mapreduce.framework.name
        yarn
    
    
        mapreduce.application.classpath             
$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*
    
    
        yarn.app.mapreduce.am.resource.mb
        1024
    

    
    
    
        mapreduce.jobhistory.address
        hadoop102:10020
    

    
    
        mapreduce.jobhistory.webapp.address
        hadoop101:19888
    

问题1:start-dfs.sh 启动集群,datanode无法全部启动,需要登录每台机分别执行一次才能启动所有datanode

解决:修改hadoop/etc/hadoop/workers,把localhost改为3台dn的host即可,注意不能有多余的空格

问题2:windows idea中执行代码无法访问hdfs

解决:

a) windows环境下载3.2版本hadoop并解压,然后配置hadoop环境变量:HADOOP_HOME, HADOOP_USER_NAME ,编辑window hosts文件,设置hadoop101/102/103对应的ip地址

b) 需要下载win-utils: GitHub - kennywgx/apache-hadoop-3.1.0-winutils: HADOOP 3.1.0 winutils

将winutil.exe和hadoop.dll复制到hadoop/bin目录下

c) hadoop集群中关闭用户权限校验并重启,vim hdfs-site.xml

    
    
        dfs.permissions.enabled
        false
    

至此,win命令行终于可以访问hdfs了,idea中程序访问也正常不会报错了

 

问题3:jdk环境变量带空格

过程中还是遇到了一个奇怪的报错:JAVA_HOME is incorrectly set. Please update xxx/hadoop-env.sh

解决:java_home是正确配置了的,所以百度该错误,了解到原因是我的JDK环境变量的值中带了空格:D:Program FilesJavajdk1.8.0_191,于是把jdk挪到另一个文件夹:D:jdkJavajdk1.8.0_191,并重新配置环境变量即可。

问题4:windows提交yarn任务到集群报错:fg: no job control

解决:根据博客:/bin/bash: line 0: fg: no job control一般解决方法_fansy1990的专栏-CSDN博客 

了解到原因是windows下提交作业到linux的hadoop集群时:生成的命令参数中对于环境变量的引用方式不同,导致的平台兼容性问题

#  生成的命令如下,%JAVA_HOME% 在Linux下不能识别,故报错:fg: no job control
exec /bin/bash -c "%JAVA_HOME%/bin/java -Djava.io.tmpdir=%PWD%/tmp -Dlog4j.configuration=container-log4j.properties xxx

博客中描述的解决方案比较复杂,我在翻阅官方文档时看到这个设置:mapreduce.app-submission.cross-platform

 文档中解释该开启该配置正是用于从windows客户端提交作业到linux服务器这种跨平台的情况下使用的,于是我愉快的应用该配置到我window下的mapred-site.xml中

    
    
    
      mapreduce.app-submission.cross-platform
      true
    

保存生效,重新提交任务,成功!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5712374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存