伪分布式hadoop集群搭建

本文详细介绍了Hadoop的配置过程,包括hadoop-env.sh、core-site.xml、hdfs-site.xml等关键文件的设置,以及如何配置YARN的yarn-site.xml和mapred-site.xml。同时,文中还提供了启动和管理Hadoop与YARN服务的命令,深入解析了Namenode的启动流程和常见错误处理方法。
摘要由CSDN通过智能技术生成

hdfs的配置

  • hadoop-env.sh文件
    export JAVA_HOME=/opt/modules/jdk1.7.0_67
  • core-site.xml文件
    <!--HDFS集群访问入口地址,写上namenode的主机名-->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://namenode的主机名:8020</value>
        </property>
    <!--声明存放数据的目录-->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/modules/hadoop-2.5.0-cdh5.3.6/data</value>
        </property>
  • hdfs-site.xml文件


    dfs.replication
    1

    数据块的副本数不能大于 datanode的节点数量
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
  • slaves文件
    • 每行一个写上datanode的主机名
      ** 声明哪些服务器是datanode
      ** 每行一个主机名

格式化文件系统:
bin/hdfsnamenodeformat b i n / h d f s n a m e n o d e − f o r m a t 启 动 服 务 : sbin/hadoop-daemon.sh start namenode
$ sbin/hadoop-daemon.sh start datanode

hdfs命令
  • 查看hdfs帮助:bin/hdfs dfs
  • 列出hdfs文件:bin/hdfs dfs -ls
  • 查看文件:bin/hdfs dfs -cat 文件url

yarn配置

  • yarn-env.sh mapred-env.sh文件:
    export JAVA_HOME=/opt/modules/jdk1.7.0_67

  • yarn-site.xml文件


    yarn.nodemanager.aux-services
    mapreduce_shuffle


    yarn.resourcemanager.hostname
    主机名

  • mapred-site.xml文件


    mapreduce.framework.name
    yarn

  • 启动yarn
    sbin/yarndaemon.shstartresourcemanager s b i n / y a r n − d a e m o n . s h s t a r t r e s o u r c e m a n a g e r sbin/yarn-daemon.sh start nodemanager

yarn命令
  • 查看yarn帮助:bin/yarn
  • 运行jar包:bin/yarn jar jar包位置 自定义工程名(最好写wordcount不然可能会报错,不知道为什么) 数据输入url 数据输出url

日志服务器的配置

  • 配置日志服务器:
    • yarn-site.xml文件
    <!--启用日志聚合功能-->
    <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>
    <!--日志保存时间-->
    <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>86400</value>
        </property>
  • mapred-site.xml文件
    <!--进程通信-->
    <property>
            <name>mapreduce.jobhistory.address</name>
            <value>bigdata1.com:10020</value>
        </property>

    <!--客户端访问入口-->
    <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>bigdata1.com:19888</value>
        </property>
启动historyserver服务

$ sbin/mr-jobhistory-daemon.sh start historyserver

namenode的启动过程
  • 启动namenode
    *读取fsimage生成内存中元数据镜像,加载到内存中
    读取editlog日志文件,加载到内存上使当前内存中元数据信息与上次关闭系统是保持一致(每次重新启动fsimage都会与editlog进行自动合并,并不需要Secondary NameNode),然后在磁盘上生成一份同内存中元数据镜像相同的fsimage文件,
    同时生成一个新的null的editlog文件用来记录以后的hdfs文件系统的更改

启动成功后:clinent对hdfs进行操作,在没有SecondaryNmaeNode守护进程的情况下,所有对hdfs的操作都将记录到editlog文件,这样会造成巨大的editlog文件,危害时下次启动namenode会非常的漫长;在启动SecondaryNameNode守护进程后,没当满足一定的触发条件,SecondaryNameNode都会拷贝namenode的fsimage和editlog文件到自己的目录下,首先将fsimage加载到内存中,然后加载editlog文件到内存中合并fsimage和editlog文件为一个新的fsimage文件,然后将新的fsimage文件拷贝会namenode目录下,并且声称新的editlog文件用于dfs的更改*

相关错误汇总

格式化报错处理
  • 1.修改元数据,使其统一
    查看datanode的 cd /opt/modules/hadoop-2.5.0-cdh5.3.6/data/dfs/data/current/BP-1120641359-192.168.65.119-1532430810525/current
    下的VARSION文件中的
    [hadoop@master01 current]vi VERSION  
        namespaceID=1638354450   #元数据ID  
    查看namenode元数据ID  
        cd /opt/modules/hadoop-2.5.0-cdh5.3.6/data/dfs/name/current  
        [hadoop@master01 current]
    vi VERSION      namespaceID=1638354450   #元数据ID  查看namenode元数据ID      cd /opt/modules/hadoop-2.5.0-cdh5.3.6/data/dfs/name/current      [hadoop@master01 current]
    vi VERSION
    namespaceID=1638354450 #元数据ID
    把namenode与datanode的元数据ID修改一致

  • 2.直接删除hadoop下的data文件夹重新格式化
    $bin/hdfs namenode -format

错误IOException
  • 错误信息
java.io.IOException: Failed on local exception: java.net.SocketException: Unresolved address; Host Details : local host is: "node-1"; destination host is: (unknown):0;
  • 解决办法:将hosts中ip地址放在前面, 然后删除data重新格式化

MapReduce

任务流程分析
  • 逻辑切片:逐步遍历待处理的数据目录下的文件
    • 1.txt 150M 2.txt 80M
    • split1–>1.txt 0-128M split2–>1.txt 128M-150M split3–>2.txt-80M
  • 切片的个数决定了本次mr程序启动多少个maptask
  • 然后TextInputFormat组件进行对maptask进行读取,以行为单位,读取结果为K,V对K:起始偏移量V:这一行内容
  • 把k,v,context传给map方法
  • context.write(k1,v1)写到内存缓冲区(快)
  • 内存溢出到磁盘
  • 根据reducetask个数进行分区,默认按照hashcode进行分区(分区个数job.setNumReduceTask)
  • 在每个分区内根据键值对进行排序
  • 选(局部聚合combiner处理,对键相同的会调用一次reduce方法)
  • reduce拉去属于自己分区的数据 ,按照key是否相同作为一组来调用我们重写的reduce方法
  • context.write(k2,v2)
  • 使用TestOutputFormat组件输出到指定路径(hdfs上)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值