你的位置:首页 > 数据库

[数据库]Hadoop_day01


Hadoop7天课程

课程体系

Day01>>>>>>>>>>>>>>>>>>>>

hadoop项目简介

hadoop简介

hadoop前景

apache的开源项目

  • 解决问题:(核心)

    海量数据的存储(HDFS)

    ---Hadoop分布式文件系统,解决机器怎么存储

    海量数据的分析(MapReduce)

    ----分布的计算模型,解决机器怎么干活,区分主从

    资源管理调度(YARN)

    ---另一个资源调用系统,hadoop2.0之后出现,以前只能MapReduce

    (不局限于mapreduce:storm实时流、mpi等)

  • 作者:Doug Cutting

    Hadoop的商业版本cdh,已经提供技术支持

    lucene的作者

  • 受Google三篇论文的启发(GFS、MapReduce、BigTable)

    gfs谷歌的分布式文件系统---hdfs数据存储

    mapreduce谷歌分布式计算模型----mapreduce数据分析

    bigtable大表数据库---hbase列式数据库(介于关系型和nosql之间)怎么存储

hadoop能做什么?

hadoop擅长日志分析,主要处理离线数据(分析以前产生的数据),facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是Hive,少量尝试mahout!)

storm做实时推荐

hadoop的广泛应用

哪些公司使用hadoop

Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。几乎所有主流厂商都围绕Hadoop开发工具、开源软件、商业化工具和技术服务。今年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明显增加了Hadoop方面的投入

hadoop在淘宝

  • 从09年开始,用于对海量数据的离线处理,例如对日志的分析,交易记录的分析等
  • 规模从当初的3~4百台节点,增加到现在的一个集群有3000个节点,淘宝现在已经有2~3个这样的集群
  • 在支付宝的集群规模也有700台节点,使用Hbase对用户的消费记录可以实现毫秒级查询

扩展知识:参照淘宝双十一解决方案

淘宝数据魔方的架构

淘宝数据魔方的真实面目

hadoop生态圈

版本

  • Apache

官方版本(2.4.1)

  • Cloudera---cdh(hadoop的商业版本)

    使用下载最多的版本,稳定,有商业支持,在Apache的基础上打上了一些patch。推荐使用。

  • HDP(Hortonworks Data Platform)

Hortonworks公司发行版本。

Hadoop的核心

Hdfs分布式文件系统

Mapreduce并行计算框架

Yarn资源管理调度系统(运行符合规则的程序)

1.0和2.0

Yarn的出现使得hadoop可以支持多个计算框架(不仅是mapreduce)

核心之一---yarn

核心之二--hdfs

怎么解决海量数据的存储

通过水平扩展机器数量来提高存储数据的能力

hdfs的架构

  • 主从结构

    主节点,只有一个: namenode,负责管理

    从节点,有很多个: datanode 负责存储

  • namenode负责:

    接收用户操作请求

    维护文件系统的目录结构

    管理文件与block之间关系,block与datanode之间关系

  • datanode负责:

    存储文件

    文件被分成block存储在磁盘上

    为保证数据安全,文件会有多个副本

核心之三--mapreduce编程模型

怎样解决海量数据的计算

map:大任务分解为若干个小任务

reduce:小任务再汇总整合成大任务的结果

hadoop集群的物理分布:

Rack:机架、switch:交换机、datanode:hdfs的小弟(从节点)

单点物理结构

Hadoop部署方式

本地模式:eclipse调试用,只启一个mapper一个reduce

伪分布模式:一台机器模拟多台机器

集群模式:真实的生产环境

hadoop的特点

  • 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。
  • 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。
  • 高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。
  • 可靠性(Reliable):hadoop能自动地维护数据的多份副本,并且在任务失败后能自动地重新部署(redeploy)计算任务。

搭建hadoop的伪分布环境

1.准备Linux环境

    1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.1.0 子网掩码:255.255.255.0 -> apply -> ok

        回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet1 -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.1.110 子网掩码:255.255.255.0 -> 点击确定

        在虚拟软件上 --My Computer -> 选中虚拟机 -> 右键 -> settings -> network adapter -> host only -> ok    

    1.1修改主机名

    

        vim /etc/sysconfig/network

        NETWORKING=yes

        HOSTNAME=itcast01 ###

    1.2修改IP

        两种方式:

        第一种:通过Linux图形界面进行修改(强烈推荐)

            进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.1.119 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply

        第二种:修改配置文件方式(屌丝程序猿专用)

            vim /etc/sysconfig/network-scripts/ifcfg-eth0

            DEVICE="eth0"

            BOOTPROTO="static"

            HWADDR="00:0C:29:2C:BF:E3"

            IPV6INIT="yes"

            NM_CONTROLLED="yes"

            ONBOOT="yes"

            TYPE="Ethernet"

            UUID="ce22eeca-ecde-4536-8cc3-ef0fc36d6a8c"

            IPADDR="192.168.56.32 "

            NETMASK="255.255.255.0"

            GATEWAY="192.168.56.1"

    1.3修改主机名和IP的映射关系

    ----x相当于本地的dns

        vim /etc/hosts

        192.168.56.31    jkdong01

    1.4关闭防火墙

        #查看防火墙状态

        service iptables status

        #关闭防火墙

        service iptables stop

        #查看防火墙开机启动状态

        chkconfig iptables --list

        #关闭防火墙开机启动

        chkconfig iptables off

    1.5重启Linux

        reboot

2.安装JDK

    2.1上传(ftp工具)

    2.2解压jdk

        #创建文件夹

        mkdir /usr/java

        #解压

        tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/

    2.3将java添加到环境变量中

        vim /etc/profile

        #在文件最后添加

        export JAVA_HOME=/usr/java/jdk1.7.0_55

        export PATH=$PATH:$JAVA_HOME/bin

        #刷新配置

        source /etc/profile

3.安装Hadoop

    3.1上传hadoop安装包

    3.2解压hadoop安装包

        #解压到/itcast/目录下

        tar -zxvf hadoop-2.2.0.tar.gz -C /itcast/

    3.3修改配置文件(5个)

Cd etc/hadoop

        第一个:hadoop-env.sh—指定环境变量

        #在27行修改

        第二个:core-site.

        

        第三个:hdfs-site.

        

        第四个:mapred-site.

            

第五个:yarn-site.

    

    3.4将hadoop添加到环境变量

        命令:vim /etc/profile

                再执行:source /etc/profile刷新配置

    3.5格式化HDFS(namenode)第一次使用时要格式化

        hadoop namenode -format(过时了但是依然可用)

hdfs namenode -format(现用的格式化命令)

    3.6启动hadoop

        先启动HDFS

        sbin/start-dfs.sh

        再启动YARN

        sbin/start-yarn.sh

    3.7验证是否启动成功

        使用jps命令验证

4.配置ssh免密码登陆

Ssh即安全的shell命令

    生成ssh免登陆密钥

    cd ~,进入到我的home目录

    cd .ssh/

    ssh-keygen -t rsa (四个回车)

    执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

    将公钥拷贝到要免登陆的机器上

/root/.ssh目录下:cp id_rsa.pub authorized_keys

    或

    ssh-copy-id 192.168.56.32

Ssh免密登录的原理

这样server A就可以对server B进行免密码登录

Day02>>>>>>>>>>>>>>>>>>>>

课程安排:

  • 分布式文件系统与HDFS
  • HDFS体系结构与基本概念
  • HDFS的shell操作
  • java接口及常用api

hdfs原理

Datanode会横向流水线方式复制文件产生副本

上传的文件还会分block块(hadoop块的大小128M)

分布式文件系统

用一个系统来管理多台机器上的文件(冗余存储)

允许通过网络分享文件和存储空间

通透性:访问远程文件就像访问本地资源一样

容错:持续运行而不会使数据损失

Hdfs就是一种分布式文件系统,不支持并发写(按block块的顺序写),小文件不适合(hadoop1.x)

常见分布式文件系统:gfs(谷歌文件系统),hdfs、Lustre。。。

 

Day03>>>>>>>>>>>>>>>>>>>>

 

Day04>>>>>>>>>>>>>>>>>>>>

 

Day05>>>>>>>>>>>>>>>>>>>>

 

Day06>>>>>>>>>>>>>>>>>>>>

 

Day07>>>>>>>>>>>>>>>>>>>>