/*目录*/

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完全分布式搭建部署

posted @ 2020-07-16 09:45  嘟嘟噜~  阅读(136)  评论(0编辑  收藏  举报