关于搭建hadoop集群的配置和错误总结

首先说一些我的关于hadoop的配置吧:

  • hadoop集群的主要配置文件有:
  1. hadoop-env.sh:配置hadoop运行所需的环境变量
  2. yarn-env.sh:配置yarn运行所需的环境变量
  3. core-site.xml:hadoop核心全局配置文件,可在其他配置文件中引用
  4. hdfs-site.xml:HDFS配置文件,继承core-site.xml配置文件
  5. mapred-site.xml:MapReduce配置文件,继承core-site.xml
  6. yarn-site.xml:yarn配置文件,继承core-site.xml
  • 关于hadoop-env.sh
    这个里面需要配置JAVA_HOME,也就是配置一下jdk的安装路径
    # The java implementation to use.
    export JAVA_HOME=/export/servers/jdk
    
  • 关于core-site.xml的配置
    <configuration>
    		<!-- 用于指定hadoop的文件系统 -->
            <property>
                    <name>fs.defaultFS</name>
                    <!-- 指定namenode在hadoop001这台机器上 -->
                    <value>hdfs://hadoop001:9000</value>
            </property>
            <property>
            		<!-- 配置Hadoop临时文件存储目录 -->
                    <name>hadoop.tmp.dir</name>
                    <value>/export/servers/hadoop-2.7.4/tmp</value>
            </property>
    </configuration>
    
    这里配置了Hadoop集群的主节点位置,同时配置了hadoop的临时文件存储的目录(注意这个tmp:namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下的所有目录,如果不清空tmp下的文件,就会导致datanode启动不成功)
  • 关于hdfs-site.xml的配置
    <configuration>
            <property>
                    <name>dfs.replication</name>
                    <value>3</value>
            </property>
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>hadoop002:50090</value>
            </property>
    </configuration>
    
    这里配置了HDFS数据块的副本数量,默认为3,此处不必配置,并且设置了secondarynamenode的主机是谁
  • 关于mapred-site.xml的配置
    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
    </configuration>
    
    这里的配置很简单,就是配置了我们hadoop的mapReduce的运行框架为yarn,下面就是关于yarn的配置
  • yarn-site.xml的配置
    configuration>
            <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>hadoop001</value>
            </property>
            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
            <property>
                    <name>yarn.nodemanager.resource.memory-mb</name>
                    <value>2048</value>
            </property>
            <property>
                    <name>yarn.scheduler.minimum-allocation-mb</name>
                    <value>2048</value>
            </property>
            <property>
                    <name>yarn.nodemanager.resource.cpu-vcores</name>
                    <value>1</value>
            </property>
    </configuration>
    
    在这里,我们配置了yarn的主进程resourceManager运行的主机为hadoop001,并且配置了关于nodeManager运行的附属服务mapreduce_shuffle,只有配置这个才能正常运行MapReduce默认程序,后面分别是定义nodemanager上要提供正在运行的容器的全部可用资源大小,资源管理器中分配给每个容器请求的最小内存限制,nodemanager可以分配的cpu核数。

中间关于hadoop集群配置出现的问题

  • 问题一:配置完成后,namenode不能启动
    解决方案:

    1. 先是再次将主节点再次格式化,hdfs namenode -format,再次启动hadoop,无效。
    2. 查看日志:ulimit -a for user root,网上查询原因得到:datanamenode运行时打开文件数,达到系统最大限制当前最大限制,ulimit -n 65536,调整最大文件数再次启动hadoop,无效。
    3. 检查配置文件,发现core-site.xml中关于配置hadoop集群主节点位置,属性的名称写错了… 解决
  • 问题二:解决namenode之后可以正常启动了,但是jps发现进程中没有nodemanager,启动之后就挂掉,就是nodemanager总是掉线
    解决方案:修改配置文件yarn-site.xml

    	<property>
                <name>yarn.nodemanager.resource.memory-mb</name>
                <value>2048</value>
        </property>
        <property>
                <name>yarn.scheduler.minimum-allocation-mb</name>
                <value>2048</value>
        </property>
        <property>
                <name>yarn.nodemanager.resource.cpu-vcores</name>
                <value>1</value>
    	</property>
    

    分别是定义nodemanager上要提供正在运行的容器的全部可用资源大小,资源管理器中分配给每个容器请求的最小内存限制,nodemanager可以分配的cpu核数, 问题解决。

  • 问题三:修改了上述问题后,又格式化了一下hdfs的文件系统,重新启动hadoop竟然发现,datanode不能成功启动
    解决方案:
    问题原因:namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败。
    解决:清空hadoop安装目录下的tmp目录,也就是之前配置文件中指定的tmp目录,重新启动tmp,注意:我是三台,所以三台机器都要清空tmp下的文件,成功解决。

坎坷的道路

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值