大数据技术学习笔记之Hadoop框架基础2-MapReduce编程及运行流程

版权声明: https://blog.csdn.net/weixin_37254888/article/details/79704070
一、回顾
    -》hadoop的功能?
        -》海量数据存储和海量计算问题
        -》分布式文件存储框架hdfs和分布式计算模型框架MapReduce
    -》hadoop的四大组件?
        -》common:用于支持其他模块的组件
        -》hdfs:分布式文件系统
        -》MapReduce:分布式计算模型
        -》YARN:分布式任务调度和资源管理框架
    -》hdfs的架构?
        -》分布式并行架构
        -》主从架构
            -》NameNode:主节点,负责管理、管理元数据(内存)、管理从节点
            -》DataNode:从节点,负责数据的读写
        -》如何通过客户端去实现数据读写
            
    -》hdfs的常用命令
        -》读:bin/hdfs dfs -cat
        -》上传:bin/hdfs dfs -put linux_path hdfs_path
        -》下载:bin/hdfs dfs -get hdfs_path linux_path
        -》删除:bin/hdfs dfs -rm -r
    -》hadoop安装Linux环境配置
        -》ip、dns、网关
        -》本地网络映射:使用主机名访问机器
            192.168.111.111 zhuyun.com
            unknown host :不能识别的主机名
        -》关闭防火墙、selinux
        -》ntp时间同步:将整个集群所有的机器时间统一(分布式)
        -》ssh免密钥登录(分布式)
        -》卸载openjdk,安装oracle jdk
            -》解压
            -》配置环境变量
                export JAVA_HOME=                    有一些程序会从环境变量中直接读Javahome
                export PATH=$PATH:$JAVA_HOME/bin
                可以在命令行的任何 一个地址执行java的命令
    -》hadoop的安装配置
        -》下载解压
        -》修改配置
            -》hadoop-env.sh/mapred-env.sh/yarn-evn.sh    :配置hadoop的环境变量
                JAVA_HOME
            -》core-site.xml :    hadoop的全局配置
                -》配置hdfs的入口
                    fs.defaultFS            hdfs://hostname:8020
                -》hadoop的临时目录
                    hadoo.tmp.dir            $HADOOP_HOME/datas
            -》hdfs-site.xml:配置hdfs
                -》副本数:dfs.replication            1
                -》关闭hdfs访问权限:    dfs.permission.enabled    false
            -》mapred-site.xml:配置MapReduce
                -》mapreduce的运行框架
                    mapre.framework
            -》yarn-site.xml:配置yarn
                -》配置resourcemanager的地址
                    yarn.resourcemanager.hostname
                -》指定MapReduce的 运行为是shuffle
            -》slaves
                -》所有从节点的地址
    -》mapreduce程序运行方式
        -》bin/yarn jar jar_path main_class input_path output_path
        
        
        
一、hadoop的启动与常用配置
    -》hadoop如何启动
        -》第一种方式:单个进程启动
            -》启动hdfs与yarn
                -》sbin/hadoop-daemon.sh start namenode
                -》sbin/hadoop-daemon.sh startdatanode
                -》sbin/yarn-daemon.sh start resourcemanager
                -》sbin/yarn-daemon.sh start nodemanager
            -》查看进程:
                jps
                日志文件:hadoop-rdedu-datanode-bigdata-training01.erongda.com.log
                
                进程分类-用户名-进程名称-主机名.log
                
                tail -100f logfile
        -》第二种:分别启动hdfs与yarn进程(需要配置ssh免密钥协议)
            start-dfs.sh            stop-dfs.sh
                -》NameNode
                -》DataNode
                -》secondery NameNode
            start-yarn.sh            stop-yarn.sh
                -》resourcemanager
                -》nodemanager
        -》第三种:一次性启动hdfs与yarn(需要配置ssh免密钥协议)
            start-all.sh            stop-all.sh
                
    -》SSH免密钥协议
        A要登录B
        -》生成A的密钥:公钥和私钥
            ssh-keygen -t rsa
        -》A将自己的公钥发送给B
            ssh-copy-id B_HOSTNAME
        -》B保存A的公钥
        
    -》安全模式:
    Safe mode is ON. The reported blocks 5 has reached the threshold 0.9990 of total blocks 5. The number of live datanodes 1 has reached the minimum number 0. In safe mode extension. Safe mode will be turned off automatically in 12 seconds.

18 files and directories, 5 blocks = 23 total filesystem object(s).

Heap Memory used 31.68 MB of 47.61 MB Heap Memory. Max Heap Memory is 966.69 MB.

Non Heap Memory used 37.95 MB of 39 MB Commited Non Heap Memory. Max Non Heap Memory is -1 B.

    -》NN启动,加载本地元数据文件到内存中,等待从节点进行汇报
    -》DN启动,向NN进行注册,等待30秒,NN开始进行数据块校验
    -》如果数据块差比<99.9%,进入安全模式
    -》安全模式HDFS会修复丢失的数据块,不允许进行读写
    -》手动管理安全模式
        bin/hdfs dfsadmin -safemode [enter|leave|get|wait]
                
        
    -》配置历史服务器:用于查看运行过的任务
        -》修改配置文件:mapred-site
                <!--配置jobhistory服务-->
                <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>bigdata-training01.erongda.com:10020</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>bigdata-training01.erongda.com:19888</value>
                </property>
        -》重启
        -》启动服务
            sbin/mr-jobhistory-daemon.sh start historyserver
            
        -》默认情况:hadoop由8088跳转19888时,默认使用resourcemanager的hostname和19888
            -》解决方案:
                windows中添加本地映射
                C:\Windows\System32\drivers\etc\hosts
                192.168.134.188    bigdata-training01.erongda.com
            
    -》配置日志聚合:将所有程序的日志保存到hdfs上
        -》修改配置文件yarn-site
            <!--配置日志聚合-->
            <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
            </property>
            <property>
                <name>yarn.log-aggregation.retain-seconds</name>
                <value>604800</value>
            </property>
            <property>
                <name>yarn.log-aggregation.retain-check-interval-seconds</name>
                <value>60480</value>
            </property>
        -》重启
        -》测试
            bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test01/wordcount.txt /wc-out/wc-out4
            
    -》本地库:
        WARN,表示当前本地库与当前系统不匹配
        -》自己编译hadoop
            
            
            
二、mapreduce开发环境的搭建
    -》Linux
        -》jdk
        -》maven
            -》解压
                tar -zxvf apache-maven-3.3.9-bin.tar.gz -C /opt/modules/
            -》配置环境变量
            -》修改Maven的镜像源
            -》拷贝一份到用户家目录的.m2目录下
        -》eclipse
            -》解压
                tar -zxvf eclipse-jee-neon-3-linux-gtk-x86_64.tar.gz -C /opt/modules/
            -》启动./eclipse
            -》修改快捷键
                content assit  :原来是Ctrl+space,修改为alt+/
                word complication : 原来是alt + / ,任意修改为其他的

    -》本地
        -》JDK
        -》eclipse
        -》Maven
    -》开发
        -》编写hdfs的api
            -》创建Maven工程
            -》引入maven依赖
            -》引入配置文件
                core-site.xml
                hdfs-site.xml
                log4j
        -》wordcount程序
            bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /input_path /output_path
            
            -》需求:
                hadoop hive hbase
                spark hadoop hadoop
                结果:
                hadoop  3
                hbase   1
                hive    1
                spark   1    
            -》MapReduce程序执行过程
                MapReduce中所有的数据都以keyvalue的格式进行传递
            
                -》input:默认从hdfs上读文件
                    -》默认将文件变成key value的格式
                        key:行的偏移量
                        value:这一行的内容
                    -》一行会变成一个keyvalue
                -》map:负责将input阶段传递过来的数据进行分片处理
                    一个文件500MB =>  4block
            默认一个块(DataNode) = 一个分片 = 一个 map task(nodemanager)
                    -》一个map task处理多条keyvalue数据
                    —》map task中包含map方法,一条keyvalue就要调用一次map方法
                -》shuffle:将拥有相同key的value合并到一起
                    <key1,value1>
                    <key1,value2>
                    ……
                    <key1,{value1,value2}>
                -》reduce:每个key中的value集合进行处理
                    
                -》output:默认写入hdfs,也是keyvalue的格式
            
            -》wordcount程序解析
                hadoop hive hbase
                spark hadoop hadoop
                
                -》input
                    <18,hadoop hive hbase>
                    <36,spark hadoop hadoop>
                -》map
                    输入:
                    map:对value 进行处理,对每行进行分割
                        key : 每个单词
                        value:1
                    输出:
                        key value
                        
                -》shuffle:分区,排序,分组
                    hadoop 1
                    hive 1
                    hbase 1
                    spark 1
                    hadoop 1
                    hadoop 1
    
                -》reduce:启动reduce task对数据处理reduce
                    输入:
                        hadoop   {1,1,1}
                        hbase     {1}
                        hive     {1}
                        spark    {1}
                    reduce:将value集合中求和
                    输出:
                -》output
                hadoop  3
                hbase   1
                hive    1
                spark   1    
            
            
            
        
        
    
                
       

猜你喜欢

转载自blog.csdn.net/weixin_37254888/article/details/79704070