zoukankan      html  css  js  c++  java
  • hadoop

    hadoop定义

    Hadoop 是一个能够对大量数据进行分布式处理的软件框架,是一款开源软件,使用JAVA开发,Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。

    什么是大数据 ?

    大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产 ,是指从各种各样类型的数据中,快速获得有价值的信息。

    大数据的五大特性是什么?

    Volume (大体量)可从数百TB到数十数百PB、甚至EB的规模

    Variety(多样性)大数据包括各种格式和形态的数据

    Velocity(时效性)很多大数据需要在一定的时间限度下得到及时处理

    Veracity(准确性)处理的结果要保证一定的准确性

    Value(大价值)大数据包含很多深度的价值,大数据分析挖掘和利用将带来巨大的商业价值

    Hadoop特点
    高可靠性、高扩展性、高效性、高容错性、低成本

    Hadoop常用组件

    HDFS:Hadoop分布式文件系统(核心组件)

    MapReduce:分布式计算框架(核心组件)

    Yarn:集群资源管理系统(核心组件)

    Zookeeper:分布式协作服务

    Hbase:分布式列存数据库

    Hive:基于Hadoop的数据仓库

    Sqoop:数据同步工具

    Pig:基于Hadoop的数据流系统

    Mahout:数据挖掘算法库

    Flume:日志收集工具

    Hadoop配置文件及格式

    • 文件

    – Hadoop-env.sh
    JAVA_HOME
    HADOOP_CONF_DIR
    

    – xml文件配置格式

    <property>
    <name>关键字</name>
       <value>变量值</value>
       <description> 描述 </description>
    </property>
    

    配置文件帮助文档:https://hadoop.apache.org/docs/r2.7.7/

    Hadoop的部署模式有三种

    – 单机
    – 伪分布式
    – 完全分布式

    HDFS角色及概念

    Hadoop体系中数据存储管理的基础,是一个高度容错的系统,用于在低成本的通用硬件上运行角色和概念:

    – Client :切分文件,访问HDFS,与NameNode交互,获取文件位置信息,与DataNode交互,读取和写入数据

    – Namenode : Master节点,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理所有客户端请求

    – Secondarynode:定期合并fsimage 和fsedits,推送给NameNode,紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备

    – DatanodeHDFS:数据存储节点,存储实际的数据,汇报存储信息给NameNode

    • Block
    – 每块缺省128MB大小
    – 每块可以多个副本

    MapReduce----JAVA实现的分布式计算框架
    • Yarn是Hadoop的一个通用的资源管理系统

    HDFS完全分布式系统配置

    准备:
    1.安装 java-1.8.0-openjdk-devel
    2.在3台机器上配置/etc/hosts
    注意:所有主机都能ping通namenode的主机名,namenode能ping通所有节点
    3.java -version 验证java安装
    4.jps 验证角色
    5.配置SSH信任关系(NameNode)
    注意:不能出现要求输入yes的情况,每台机器都要能登录成功,包括本机

    vim /etc/ssh/ssh_config
    StrictHostKeyChecking no
    
    ssh-keygen
    
    ssh-copy-id 192.168.1.X
    

    (1) 环境配置文件:hadoop-env.sh
    OpenJDK的安装目录:JAVA_HOME
    Hadoop配置文件的存放目录:HADOOP_CONF_DIR

    (2) 核心配置文件:core-site.xml

    	<property>
    	  <name>fs.defaultFS</name>	#文件系统配置参数
    	  <value>hdfs://nn01:9000</value>
    	</property>
    	<property>
    	  <name>hadoop.tmp.dir</name>	#数据目录配置参数
    	  <value>/var/hadoop</value>
    	</property>
    

    (3)HDFS配置文件:hdfs-site.xml

    <property>
      <name>dfs.namenode.http-address</name>
      <value>nn01:50070</value>			#声明集群中namenode地址
    </property>
    <property>
      <name>dfs.namenode.secondary.http-address</name>	#Secondarynamenode地址声明
      <value>nn01:50090</value>
    </property>
    <property>
      <name>dfs.replication</name>		#文件冗余份数
      <value>2</value>			#数据一共存几份
    </property>
    

    (4) 节点配置文件:slaves

    node1
    node2		#只写DataNode节点的主机名称
    node3
    

    – Hadoop所有节点的配置参数完全一样,在一台配置好后,把配置文件同步到其它所有主机上

    – 在每台机创建/var/hadoop文件夹 mkdir

    – 在namenode上执行格式化操作 ./bin/hdfs namenode -format

    – 启动集群(namenode上) ./sbin/start-dfs.sh

    JPS验证角色:

    – NameNode验证

    [root@nn01 hadoop]# jps
    29826 SecondaryNameNode
    31237 Jps
    29643 NameNode
    

    – DataNode验证

    [root@node1 ~]# jps
    24472 Jps
    24027 DataNode
    
    • 节点验证:
      – NameNode上
      #bin/hdfs dfsadmin -report

    Zookeeper是什么

    Zookeeper是一个开源的分布式应用程序协调服务
    Zookeeper是用来保证数据在集群间的事务一致性

    Zookeeper应用场景

    – 集群分布式锁
    – 集群统一命名服务
    – 分布式协调服务

    Zookeeper角色与特性

    – Leader:接受所有Follower的提案请求并统一协调发起提案的投票,负责与所有的Follower进行内部数据交换
    – Follower:直接为客户端服务并参与提案的投票,同时与Leader进行数据交换
    – Observer:直接为客户端服务但并不参与提案的投票,同时也与Leader进行数据交换

    Zookeeper角色与选举

    – 服务在启动的时候是没有角色的(LOOKING)
    – 角色是通过选举产生的
    – 选举产生一个Leader,剩下的是Follower

    选举Leader原则:
    – 集群中超过半数机器投票选择Leader

    – 假如集群中拥有n台服务器,那么Leader必须得到n/2+1台服务器的投票

    – 如果Leader死亡,重新选举Leader

    – 如果死亡的机器数量达到一半,b则集群挂掉

    – 如果无法得到足够的投票数量,就重新发起投票,如果参与投票的机器不足n/2+1,则集群停止工作

    – 如果Follower死亡过多,剩余机器不足n/2+1,则集群也会停止工作

    – Observer不计算在投票总设备数量里面

    Zookeeper可伸缩扩展性原理与设计

    – 客户端提交一个请求,若是读请求,则由每台Server的本地副本数据库直接响应。若是写请求,需要通过一致性协议(Zab)来处理

    – Zab协议规定:来自Client的所有写请求都要转发给ZK服务中唯一的Leader,由Leader根据该请求发起一个Proposal。
    然后其他的Server对Proposal进行Vote。之后Leader对Vote进行收集,当Vote数量过半时Leader会向所有的Server发送一个通知消息。
    最后当Client所连接的Server收到该消息时,会把该操作更新到内存中并对Client的写请求做出回应
    ,Observer可以接受客户端的连接,并将写请求转发给Leader节点。但Leader节点不会要求Observer参加投票,仅仅和其他服务节点一起得到投票结果.

    Zookeeper管理文档

    hadoop完全分布式搭建部署

  • 相关阅读:
    [转]大型网站架构设计的体系演变
    [转]木桶理论已死,长板理论告诉你:优势才是王道!
    UHF RFID编码之TPP编码
    Git使用笔记
    使用Open Live Writer写博客
    频谱分析仪
    相位噪声
    峰值因子,峰均比,Reference Level
    SeeSharpTools.JXI.DSP.Spectrum 使用
    dyld: Library not loaded: /usr/lib/libstdc++.6.dylib
  • 原文地址:https://www.cnblogs.com/xujint/p/13320990.html
Copyright © 2011-2022 走看看