hadoop-0

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chuan403082010/article/details/84764898

引言
--------------------------------------------------------------------------------------------------------------
    “在古时候,人们用牛来拉重物。当一头牛拉不动一根圆木时,人们从来没有考虑过要想方设法培育出一种更强壮的牛。
    同理,我们也不该想方设法打造什么超级计算机,而应该千方百计综合利用更多计算机来解决问题。”
                                                                                ——葛蕾丝-霍珀(Grace Hopper)
                    
                                                                                
大数据应用案例分析
--------------------------------------------------------------------------------------------------------------
    http://www.cnzz.com
    http://www.mafengwo.cn/


大数据框架简介
--------------------------------------------------------------------------------------------------------------
    1. 离线部分
        -》Hadoop
            - Common:封装了大量的API,为后面的模块服务
            - HDFS:分布式文件系统,存储海量数据
            namenode:
接收用户操作请求,维护文件系统的目录结构
管理文件与block之间的关系,block与DataNode之间的关系,在整个HDFS集群中只有一个并且只有唯一一个处于激活状态的namenode节点
datanode:
存储文件,文件是被分成block存储在磁盘上
为了保证数据安全,文件会有多个副本
周期性的向namenode节点报告它存了那些文件的block
            - MapReduce:分布式计算框架,编程模型
            - YARN:一个集群资源管理系统,允许任何分布式程序(不仅仅是MapReduce)基于Hadoop集群的数据而运行
        -》HBase:非关系型数据库
        -》Hive:类SQL语句,数据仓库,用于分析

    2. 实时部分
        -》Spark


大数据
-------------------------------------------------------------------------------------------------------------
    0. 数据是以字节来衡量大小
        -》1Byte = 8bit
        -》1024B = 1KB
        -》1024KB = 1MB
        -》1024MB = 1GB
        -》1024GB = 1TB
        -》1024TB = 1PB
        -》1024PB = 1EB
        
    1. 数据来源:
        -》用户行为数据(推荐系统)
            - 搜索习惯,关键字
            - 消费记录,支付宝
        -》业务数据
            - 公司内部产生的数据
        -》爬虫技术采集
            - python,java语言实现对网页的抓取
        -》生产机器上的日志文件
            - 日志文件
            
    2. “大数据胜于好算法”:
        -》对于某些应用(譬如根据以往的偏好来推荐电影和音乐),不论算法有多牛,基于小数据的推荐效果往往都不如基于大量可用数据的
           一般算法的推荐效果。
           
    3. 现在有了大量数据,我们必须想方设法好好地存储和分析这些数据


Hadoop发展史
-------------------------------------------------------------------------------------------------------------
    2002年,Apache Nutch 网页抓取,数十亿存储瓶颈
    2003年,GFS论文
    2004年,Nutch开发NDFS,既HDFS前身
    2004年,Google发表MapReduce论文
    2005年,Nutch应用MR,主要算法转移到MR和NDFS运行
    2006年,MapReduce和NDFS从Nutch分离,形成Hadoop作为一个独立Lucene子项目
    2006年,Doug Cutting加入Yahoo
    2008年2月,Yahoo在1万个内核的集群上部署了Hadoop
    2008年4月,Yahoo对1T数据进行排序,耗时209秒,集群有910个节点
    2008年11月,Google对1T数据排序用了68秒
    2009年5月,Yahoo对1T数据排序用了62秒
        
        
初识Hadoop
-------------------------------------------------------------------------------------------------------------
    官方网站:hadoop.apache.org


概念性的理论
-------------------------------------------------------------------------------------------------------------
    1. hadoop2.x和1.x版本的区别
        - Hadoop Common: The common utilities that support the other Hadoop modules.
        - Hadoop Distributed File System (HDFS?): A distributed file system that provides high-throughput access to application data.
        - Hadoop YARN: A framework for job scheduling and cluster resource management.
        - Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

    2. 2.x的版本中添加了Yarn平台

    3. hadoop三大发行版本
        - Apache    apache顶级项目http://hadoop.apache.org/
        - CDH        cloudera  
        - HDP         hortonworks

    4. 分布式:
        - 分布储存
        - 分布计算

    5. 课程中用的是2.7.3的版本 
        - 常用版本:2.2.0, 2.5.0, 2.6.5, 2.7.3

        
Hadoop三种运行模式
-------------------------------------------------------------------------------------------------------------
    1. Local (Standalone) Mode        本地模式    开发人员debug调试使用        local把文件存到本地的文件系统中
    2. Pseudo-Distributed Mode        伪分布式    开发人员debug调试使用        在本地搭建HDFS,伪分布式,完全分布
    3. Fully-Distributed  Mode        完全分布式(集群)    生产环境使用        3,5,7,50,如何搭建,!!HA!!高可用性,比如突然有个节点出问题,保证集群还可用
    
    
Hadoop环境部署-JDK部分
-------------------------------------------------------------------------------------------------------------
    1. 先修改权限
        chown -R beifeng:beifeng /opt/
    2. 解压JDK到指定的目录下,目录任意,建议不要装在某个用户主目录下
        tar -zxvf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
    3. 添加环境变量
        修改vi /etc/profile文件,配置jdk环境变量
        #JAVA_HOME
        export JAVA_HOME=/opt/modules/jdk1.7.0_67
        export PATH=$PATH:$JAVA_HOME/bin
        source /etc/profile生效文件
    4. 验证是否配置成功:java -version
        jps命令可以查看java 进程
        echo $JAVA_HOME

        
Hadoop伪分布式环境部署-Hadoop部分
-------------------------------------------------------------------------------------------------------------
    1.     解压Hadoop到指定目录下
        tar -zxvf hadoop-2.5.0.tar.gz -C /opt/modules/
        
    2.     清理Hadoop的目录,将hadoop/share/doc目录删除,节省磁盘空间,通过这个命令查看df -h
    
    3.     修改hadoop/etc/hadoop/hadoop-env.sh文件
        修改hadoop/etc/hadoop/mapred-env.sh文件
        修改hadoop/etc/hadoop/yarn-env.sh文件
        指定Java安装路径
        export JAVA_HOME=/opt/modules/jdk1.7.0_67

    4.    注意:hadoop中的四个核心模块对应四个默认配置文件
        指定默认的文件系统为HDFS,文件系统的访问入口,namenode所在的机器
        9000端口是早期Hadoop 1.x使用的,现在Hadoop 2.x使用的是8020
        端口号用于节点直接内部通信,使用RPC通信机制

    5.    修改hadoop/etc/hadoop/core-site.xml文件
    指定namenode所在的机器节点,指定使用HDFS作为文件系统
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hostname:8020</value>
        </property>
    重新指定默认的工作目录
        <property>
              <name>hadoop.tmp.dir</name>
              <value>/opt/modules/hadoop-2.7.3/data/tmp</value>
        </property>
        
    6.    注意:/tmp表示临时存储目录,系统每次重启会按照脚本预先设置好的删除里面的文件
        重新自定义系统生成的文件路径,/tmp会被清空,无法保证数据文件安全性
        
    7.    修改hadoop/etc/hadoop/hdfs-site.xml文件
        指定HDFS文件存储的副本数个数,默认是3个,这里是单台机器就设置为1,这个数字要小于datanode的节点数
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>

    8.    修改hadoop/etc/hadoop/slaves文件
        指定从节点的机器位置,添加主机名即可
        hostname 比如:bd1.ibeifeng.com

    9.    格式化namenode
        bin/hdfs namenode -format

    10.    启动命令
        sbin/hadoop-daemon.sh start namenode
        sbin/hadoop-daemon.sh start datanode

    11.    查看HDFS外部UI界面
        bigdata-04或者IP地址 跟上50070端口号,外部通信http
        dfs.namenode.http-address 50070

    12.    测试HDFS环境
        创建文件夹,HDFS中有用户主目录的概念,和Linux一样
        bin/hdfs dfs -mkdir -p ibf_test/iuput
        
    13.    上传文件到HDFS
        bin/hdfs dfs -put etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml /
        
    14.    读取HDFS的文件
        bin/hdfs dfs -text /core-site.xml
        
    15.    下载文件到本地(指定下载到哪里,同时可以重命名成get-site.xml)
        bin/hdfs dfs -get /core-site.xml /home/beifeng/get-site.xml

        
HDFS的缺陷
-------------------------------------------------------------------------------------------------------------
    1.    HDFS存储的文件是不能够被修改的
    2.    HDFS不支持多用户并发写入
    3.    HDFS不适合存储大量小文件

猜你喜欢

转载自blog.csdn.net/chuan403082010/article/details/84764898