大数据技术学习笔记之Hadoop框架基础1-Hadoop介绍及伪分布式部署

版权声明: https://blog.csdn.net/weixin_37254888/article/details/79704038
一、学习建议
    -》学习思想
        -》设计思想:分布式
            -》数据采集
            -》数据存储
            -》数据计算
            -》数据可视化
    -》学习阶段
        -》了解功能简单使用                            -》java、java变量
        -》安装部署配置环境                            -》开发
        -》熟练的使用,了解基本原理                -》java集合、线程、java web
        -》深入了解架构、设计思想、性能调优    -》堆、栈、JVM,内存优化,架构设计
    -》方法:
        -》掌握hadoop设计思想
        -》安装部署、简单使用:大部分框架都是类似
        -》熟练使用:多练习
        -》积累经验:记录所有的出错
        -》多练习、多总结、理解架构
    -》收集报错
        -》出现问题
            -》分析日志
                warning:一般错误很少
                error:
                    classnotfound
                        -》名称
                        -》检查环境变量
            -》百度
            -》沟通解决
        -》更加理解原理和架构
        
        
        
二、大数据
    -》核心:用大数据处理工具对数据进行分析处理,得到价值
    -》特点:
        -》数据量大的
        -》数据量增长快
        -》多样的
        -》价值密度低的
        -》真实的
    -》hadoop诞生:hadoop1.x
        -》HDFS:hadoop distribute file system ,分布式文件系统
        -》MapReduce:分布式计算模型
        
        
        
        
三、Hadoop的介绍
    -》hadoop是干嘛的?
        -》大数据存储及处理工具
    -》hadoop的组件及其功能?
        -》hadoop1.x
            -》hdfs
            -》MapReduce
        -》hadoop2.x
            -》HDFS:分布式文件存储系统
            -》MapReduce v2 : 分布式计算模型
            -》YARN:分布式资源管理系统,负责任务调度和集群资源管理
                -》计算机资源:CPU、内存、磁盘、网络
        -》hadoop3.x
    -》分布式集群
        -》单机:一台机器,物理资源有限
        -》分布式:多台机器,物理资源可以动态扩展
    -》hadoop处理数据的过程
        -》将数据存入hdfs
        -》开发MapReduce程序
            -》从hdfs中读取数据
            -》处理数据
            -》将处理后的结果写入hdfs
        -》将开发好的程序打包成jar包
        -》将jar包提交给yarn
            -》yarn接收任务执行请求
            -》yarn为该任务分配资源
            -》执行MapReduce程序
                -》input
                -》map task
                -》reduce task
                -》output
                
    -》HDFS:hadoop distribute file system,分布式文件系统
        -》与传统文件系统相比,有什么特点?
            -》分布式:解决大数据存储问题
            -》分片机制:将一个文件按照大小自动拆分成多个文件
                    默认大小:128M/个  1G=8个block 1000M=8个block
            -》副本机制:对每个块做备份,默认每个块有3份
                机器1        block1-1    block2-3
                机器2        block1-2     block2-2
                机器3        block2-1    block1-3
                
                文件:250M    ->   block1:128M  block2:122M  
        -》如何自动的实现文件的切分、文件的合并
            -》NameNode:老大,整个hdfs集群中的老大,负责管理
                -》负责接收所有用户的请求
                    -》读
                    -》写:负责维护元数据(保存文件的信息:文件的块、存储位置)
                        -》用户向NameNode发送写的请求
                        -》NameNode返回文件写入的地址
                        -》用户将数据提交给DataNode
                        -》DataNode将数据写入,并且创建副本
                        -》写入成功后将结果反馈给NameNode
            -》DataNode:小弟,整个hdfs集群中可以有很多小弟,负责存储
            
    -》YARN:分布式任务调度和资源管理工具
        -》yarn接收用户提交的任务请求:jar
            -》ResourceManager:老大,负责管理,接收用户的请求
                -》负责资源管理和任务调度
            -》NodeManager:小弟,负责计算
        -》执行MapReduce程序
            -》RM接收到用户的请求
            -》RM会随机选择一台NM作为该任务的分配节点
            -》NM向RM申请资源,RM会分配一定的资源打包给NM
            -》NM会在其他的NM,启动多个map和reduce task任务
            -》负责的NM会收集执行的结果,汇报给RM
    
    -》MapReduce:分布式计算模型
        -》input:负责数据的输入,默认是hdfs
        -》map:将一个大的任务分解成多个小的任务交给每台机器去执行
        -》shuffle:溢写、分区、排序、分组~~~~~~~~~~~~
        -》reduce:将所有map的结果进行合并
        -》output:输出,默认是hdfs
        
        
四、Hadoop的安装部署
    -》hadoop版本
        -》Apache:发布更新都比较快
        -》Cloudera:最稳定,修复了bug、兼容性
        -》Hortonworks
        -》mapr
    -》Apache:
        -》hadoop版本:
            -》2.5.x-2.7.x
    -》hadoop模式
        -》本地模式:一般用于测试程序运行
            -》默认读本地文件系统
            -》只有task程序运行在jvm中
        -》伪分布式:单节点的分布式,所有的进程都在一台机器上
            -》老大和小弟都在一台机器上
        -》完全分布式:工作企业环境
            -》老大一般有一台
            -》小弟有很多台
    -》搭建伪分布式环境
        -》Linux环境
            -》网络:固定ip地址、DNS、网络能通外网、本地域名解析(每台机器的文件中包含所有机器的地址和主机名)
            -》关闭防火墙和selinux
                service iptables stop
                chkconfig iptables off
                
                vim /etc/selinux/config
                SELINUX=disabled
            -》普通用户:专门负责管理大数据应用:rdedu
                修改连接为rdedu自动连接
            -》ntp时间同步(完全分布式)
            -》ssh免密钥登录(完全分布式)
            -》创建大数据相关的文件夹
                sudo mkdir /opt/tools
                sudo mkdir /opt/modules   
                sudo mkdir /opt/datas
                sudo chown -R rdedu:rdedu /opt/datas
                sudo chown -R rdedu:rdedu /opt/modules/
                sudo chown -R rdedu:rdedu /opt/tools/
                
            -》安装jdk
                -》检查自带jdk是否已经卸载
                    rpm -qa | grep java
                -》解压
                    tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt/modules/
                -》配置环境变量
                    -》全局环境变量:sudo vim /etc/profile
                        export JAVA_HOME=/opt/modules/jdk1.8.0_91
                        export PATH=$PATH:$JAVA_HOME/bin
                    -》重新加载配置文件
                        source /etc/profile
                    -》检测
                        java -version
            -》安装hadoop
                -》下载解压:http://archive.apache.org/dist/
                    tar -zxvf /opt/tools/hadoop-2.7.3.tar.gz -C /opt/modules/
                -》目录结构
                    bin:命令
                     etc/conf/config/:配置文件
                    lib:依赖jar包
                    data/tmp:临时数据存储目录
                    logs:日志文件目录
                    sbin:启动脚本,管理类的命令
                -》修改配置文件
                    -》修改env文件:用于配置环境变量
                        hadoop-env.sh    
                        mapred-env.sh
                        yarn-env.sh
                        export JAVA_HOME=/opt/modules/jdk1.8.0_91
                    -》修改xml文件:
                        core-site.xml              hadoop网络、hdfs入口等配置
                        -》配置hdfs的入口
                        -》配置hadoop的临时存储目录记得修改权限为rdedu
                            mkdir datas
                            
                            /opt/modules/hadoop-2.7.3/datas
                            
                            <!-- 用于设置hdfs的入口 -->
                            <property>
                                <name>fs.defaultFS</name>
                                <value>hdfs://bigdata-training01.erongda.com:8020</value>
                            </property>
                            
                            <!-- 设置hadoop的临时存储目录-->
                            <property>
                                <name>hadoop.tmp.dir</name>
                                <value>/opt/modules/hadoop-2.7.3/datas</value>
                            </property>
                            
                        
                        
                        
                        hdfs-site.xml              hdfs相关的配置
                            <!--用于设置hdfs的副本数-->
                            <property>
                                <name>dfs.replication</name>
                                <value>1</value>
                            </property>
                            
                        slaves                配置从节点(小弟)
                            nodemanager与DataNode都在同一台机器
                            
                        
                        mapred-site.xml            MapReduce相关的配置
                        yarn-site.xml            YARN相关配置
                        
                -》格式化文件系统
                    bin/hdfs namenode -format
                -》启动hdfs
                    -》启动老大:NameNode
                        sbin/hadoop-daemon.sh start namenode
                    -》启动小弟:DataNode
                        sbin/hadoop-daemon.sh start datanode
                -》测试查看
                    -》查看网页端口
                        192.168.134.188:50070
                    -》测试
                        bin/hdfs dfs -mkdir -p /test01
                        bin/hdfs dfs -put /opt/datas/wordcount.txt /test01/
                        bin/hdfs dfs -get /test01/wordcount.txt /home/rdedu/
                        bin/hdfs dfs -cat /test01/wordcount.txt
                        bin/hdfs dfs -ls /
                        bin/hdfs dfs -rm -r /test01
        
            -》配置yarn和mapreduce
                -》配置MapReduce:mapred-site.xml
                    mv mapred-site.xml.template mapred-site.xml
                        <!--指定mapreduce运行在yarn上-->
                        <property>
                            <name>mapreduce.framework.name</name>
                            <value>yarn</value>
                        </property>
                -》配置yarn:yarn-site.xml
                        <!--指定resourcemanager的地址-->
                        <property>
                            <name>yarn.resourcemanager.hostname</name>
                            <value>bigdata-training01.erongda.com</value>
                        </property>
                        <!--MapReduce运行方式,包含shuffle过程-->
                        <property>
                            <name>yarn.nodemanager.aux-services</name>
                            <value>mapreduce_shuffle</value>
                        </property>
                -》启动yarn
                    -》启动
                        sbin/yarn-daemon.sh start resourcemanager
                        sbin/yarn-daemon.sh start nodemanager
                -》测试运行
                    -》网页端口:
                        192.168.134.188:8088
                    -》提交运行MapReduce程序
                        wordcount程序:
                         bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test01/wordcount.txt /wc-out/wc-out1
                    
        -》NameNode原理:管理元数据(内存)
            -》第一次使用NameNode之前需要格式化
                -》初始化元数据
                -》初始化数据目录:hadoop.tmp.dir
            -》启动时:
                -》将本地元数据文件fsimage加载到内存中
                -》启动DataNode,DataNode会向NameNode注册
                -》DataNode注册成功,向老大汇报自己的block信息
                -》客户端对hdfs进行读写
                -》secondery NameNode 会根据条件将hdfs的修改日志edits与fsimage合并,生成新的faimage保存到本地
                
五、常见的HDFS配置
    -》secondery NameNode
        dfs.namenode.secondary.http-address
    -》数据存储目录
        -》元数据目录
            dfs.namenode.name.dir
        -》数据文件目录
            dfs.datanode.data.dir
    -》hdfs地址:fs.defaultFS
    -》副本数:dfs.replication
    -》块大小:dfs.blocksize
    -》访问权限:dfs.permissions.enabled
            <!--用于关闭hdfs的权限检查-->
            <property>
                <name>dfs.permissions.enabled</name>
                <value>false</value>
            </property>
            
    -》一旦修改了配置文件,只有重启集群才会生效
        -》core-site
            -》重启hdfs,yarn
        -》hdfs-site
            -》重启hdfs
        -》mapred-site/yarn-site
            -》重启yarn
                        
                        
        
        
        
        
        
        
        
        
        
        
       

猜你喜欢

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