zoukankan      html  css  js  c++  java
  • Hadoop基础

    基础概念

    大数据的本质

    一、数据的存储:分布式文件系统(分布式存储)
    二、数据的计算:分部署计算

    基础知识

    学习大数据需要具备Java知识基础及Linux知识基础

    学习路线

    (1)Java基础和Linux基础
    (2)Hadoop的学习:体系结构、原理、编程
    第一阶段:HDFS、MapReduce、HBase(NoSQL数据库)
    第二阶段:数据分析引擎 -> Hive、Pig
    数据采集引擎 -> Sqoop、Flume
    第三阶段:HUE:Web管理工具
    ZooKeeper:实现Hadoop的HA
    Oozie:工作流引擎
    (3)Spark的学习
    第一阶段:Scala编程语言
    第二阶段:Spark Core -> 基于内存、数据的计算
    第三阶段:Spark SQL -> 类似于mysql 的sql语句
    第四阶段:Spark Streaming ->进行流式计算:比如:自来水厂
    (4)Apache Storm 类似:Spark Streaming ->进行流式计算

    NoSQL:Redis基于内存的数据库

    HDFS

    分布式文件系统 解决以下问题:
    1、硬盘不够大:多几块硬盘,理论上可以无限大
    2、数据不够安全:冗余度,hdfs默认冗余为3 ,用水平复制提高效率,传输按照数据库为单位:Hadoop1.x 64M,Hadoop2.x 128M

    管理员:NameNode 硬盘:DataNode

    ![image.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/8ca9f78b244c7f991e73f71fd1e56421.png)
    

    MapReduce

    基础编程模型:把一个大任务拆分成小任务,再进行汇总
    MR任务:Job = Map + Reduce 
        Map的输出是Reduce的输入、MR的输入和输出都是在HDFS
    

    MapReduce数据流程分析:
    Map的输出是Reduce的输入,Reduce的输入是Map的集合
    image.png

    HBase

    什么是BigTable?: 把所有的数据保存到一张表中,采用冗余 ---> 好处:提高效率
    1、因为有了bigtable的思想:NoSQL:HBase数据库
    2、HBase基于Hadoop的HDFS的
    3、描述HBase的表结构
    核心思想是:利用空间换效率
    image.png

    Hadoop环境搭建

    环境准备

    Linux环境、JDK、http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-3.0.0/hadoop-3.0.0-src.tar.gz

    安装

    1、安装jdk、并配置环境变量
    vim /etc/profile 末尾添加
    image.png

    2、解压hadoop-3.0.0.tar.gz、并配置环境变量
    tar -zxvf hadoop-3.0.0.tar.gz -C /usr/local/
    mv hadoop-3.0.0/ hadoop
    image.png

    image.png
    vim /etc/profile 末尾添加
    image.png

    配置

    Hadoop有三种安装模式:
    本地模式 :
    1台主机
    不具备HDFS,只能测试MapReduce程序
    伪分布模式:
    1台主机
    具备Hadoop的所有功能,在单机上模拟一个分布式的环境
    (1)HDFS:主:NameNode,数据节点:DataNode
    (2)Yarn:容器,运行MapReduce程序
    主节点:ResourceManager
    从节点:NodeManager
    全分布模式:
    至少3台

    我们以伪分布模式为例配置:

    修改hdfs-site.xml:冗余度1、权限检查false

    <!--配置冗余度为1-->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    
    <!--配置权限检查为false-->
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    

    修改core-site.xml

    <!--配置HDFS的NameNode-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.56.102:9000</value>
    </property>
    
    <!--配置DataNode保存数据的位置-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
    

    修改mapred-site.xml

    <!--配置MR运行的框架-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yar</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>
                /usr/local/hadoop/etc/hadoop,
                /usr/local/hadoop/share/hadoop/common/*,
                /usr/local/hadoop/share/hadoop/common/lib/*,
                /usr/local/hadoop/share/hadoop/hdfs/*,
                /usr/local/hadoop/share/hadoop/hdfs/lib/*,
                /usr/local/hadoop/share/hadoop/mapreduce/*,
                /usr/local/hadoop/share/hadoop/mapreduce/lib/*,
                /usr/local/hadoop/share/hadoop/yarn/*,
                /usr/local/hadoop/share/hadoop/yarn/lib/*,
        </value>
    </property>
    

    修改yarn-site.xml

    <!--配置ResourceManager地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>192.168.56.102</value>
    </property>
    
    <!--配置NodeManager执行任务的方式-->
    <property>
        <name>yarn.nodemanager.aux-service</name>
        <value>mapreduce_shuffle</value>
    </property>
    

    格式化NameNode

    hdfs namenode -format
    看到common.Storage: Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted表示格式化成功

    启动

    start-all.sh
    (*)HDFS:存储数据
    (*)YARN:

    访问

    (*)命令行
    (*)Java Api
    (*)WEB Console
    HDFS: http://192.168.56.102:50070
    Yarn: http://192.168.56.102:8088

    image.png

    查看HDFS管理界面和yarn资源管理系统
    image.png
    image.png

    基本操作:

    HDFS相关命令

        -mkdir   在HDFD创建目录    hdfs dfs -mkdir /data
        -ls         查看目录                 hdfs dfs -ls
        -ls -R      查看目录与子目录    hdfs dfs -ls -R
        -put        上传一个文件        hdfs dfs -put data.txt /data/input
        -copyFromLocal 上传一个文件 与-put一样
        -moveFromLocal 上传一个文件并删除本地文件 
        -copyToLocal        下载文件 hdfs dfs -copyTolocal /data/input/data.txt
        -put    下载文件 hdfs dfs -put/data/input/data.txt
        -rm     删除文件 hdfs dfs -rm
        -getmerge     将目录所有文件先合并再下载
        -cp    拷贝
        -mv    移动
        -count    统计目录下的文件个数
        -text、-cat    查看文件
        -balancer    平衡操作
    

    image.png

    MapReduce示例

    image.png
    结果:
    image.png
    如上 一个最简单的MapReduce示例就执行成功了

  • 相关阅读:
    设计模式之适配器模式温故知新(九)
    设计模式之策略模式总结(八)
    设计模式之观察者模式, 个人感觉相当的重要(七)
    设计模式之抽象工厂模式读后(六)
    设计模式之工厂模式详细读后感TT!(五)
    设计模式之简单工厂模式, 加速(四)
    设计模式之代理模式笔记(三)
    设计模式之单例模式读后思考(二)
    为什么要用设计模式?先看看6大原则(一)
    Codeforces_835
  • 原文地址:https://www.cnblogs.com/diegodu/p/9267569.html
Copyright © 2011-2022 走看看