云计算读书笔记(五)

简介:

Hadoop:Google云计算的开源实现

Hadoop是Apache开源组织的一个分布式计算机框架,可以在大量廉价的硬件设备组成的集群上运行应用程序,为应用程序提供一组稳定可靠的接口,旨在构建一个具有高可靠性和良好扩展性的分布式系统。

Hadoop的核心是HDFS,MapReduce和HBase,它们分别对应Google的云计算GFS,MapReduce和Bigtable。

Hadoop主要由以下几个子项目组成:

1)Hadoop Common:原来的Hadoop Core,这是整个Hadoop项目的核心

2)Avro:Hadoop的RPC方案

3)Vhukwa:一个用来管理大型分布式系统的数据采集系统

4)HBase:支持结构化数据存储的分布式数据库,是Bigtable的开源实现

5)HDFS:提供高呑吐量的分布式文件系统,是GFS的开源实现

6)Hive:提供数据摘要和查询功能键的数据仓库

7)MapReduce:大型数据的分布式处理模型

8)Pig:是在MapReduce上构建的一种高级的数据流语言

9)ZooKeeper:用于解决分布式系统中的一致性问题,是Chubby的开源实现

除了开源以外,hadoop还有很多优点:

1)可扩展

2)经济

3)可靠

4)高效

分布式文件系统HDFS

设计前提和目标:

1)处理硬件错误并快速自动恢复

2)流式的数据访问,应用程序以流式读为主,做批量处理,更注重数据访问的高吞吐量

3)超大规模数据集,支持大文件存储,一个单一的HDFS实例能够支撑数以千万计的文件,并且能在一个集群里扩展到数百个节点

4)简单一致性模型,应用程序一般对文件实行一次性写,多次读的访问模式

5)移动计算比移动数据更简单

6)异构软硬件平台间的可移植性

体系结构:

HDFS是一个主从结构的体系,HDFS集群有一个NameNode和很多个DataNode组成的。

NameNode管理文件系统的元数据,DataNode存储实际的数据。客户端联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。

HDFS的数据都是一次写入多次读取,典型的块大小是64MB

客户端从NameNode获得组成文件的数据块的位置列表,也就是知道数据块被存储在哪些DataNode上,然后客户端直接从DataNode上读取文件,NameNode不参与文件的传输

NameNode使用事件日志记录HDFS元数据的变化,使用映像文件存储文件系统的命名空间

保障可靠性措施:

1)冗余备份

2)副本存放

3)心跳检测,每个DataNode定期接受心跳包和块报告,收到心跳包说明该DataNode工作正常

4)安全模式,在系统启动时会进入一个安全模式,此时不会出现数据块的写操作

5)数据完整性检测,在HDFS文件创建时,计算每个数据块和校验和,并将校验和作为一个单独的隐藏文件保存在命名空间下。客户端获取文件时会做对应的校验检查,如果不同则客户端认为数据块有损坏,将从其它的DataNode获取数据块的副本

6)空间回收,当文件被删除时,会先被移到/trash目录里,只要还在这个目录里就可以很快恢复,目录的清空时间是可配置的

7)元数据磁盘失效,映像文件和事务日志是HDFS的核心数据结构

8)快照,快照支持某个时间的数据复制,当HDFS数据损坏时,可以回滚到过去一个已知正确的时间点。

提升性能的措施:

1)副本选择

2)负载均衡

3)客户端缓存

4)流水线复制

访问接口:

可以通过Java API,也可以使用C语言封装的API

1)org.apache.hadoop.conf:定义了系统参数的配置文件处理API

2)org.apache.hadoop.dfs:Hadoop分布式文件系统(HDFS)模块的实现

3)org.apache.hadoop.fs:定义了抽象的文件系统API

4)org.apache.hadoop.io:定义了通用的I/O API,用于针对网络,数据库,文件等数据对象做读/写操作

5)org.apache.hadoop.ipc:用于网络服务端和客户端的工具,封装了网络异步I/O的基础模块

6)org.apache.hadoop.mapred:Hadoop分布式计算系统(MapReduce)模块的实现

7)org.apache.hadoop.metrics:定义了用于性能统计信息的API,主要用于mapred和dfs模块

8)org.apache.hadoop.record:定义了针对记录的I/O API类及一个记录描述语言的翻译器

9)org.apache.hadoop.tools:定义了一些通用的工具

10)org.apache.hadoop.util:定义了一些公用的API

分布式数据处理MapReduce

MapReduce是一种分布式的计算机模型,也是Hadoop的核心

逻辑模型:

将运行在大规模集群上的并行计算过程抽象为两个函数:Map和Reduce,也就是映射和化简

简单说MapReduce就是任务的分解与结果的汇总,Map把任务分解为多个任务,Reduce把分解后的结果汇总起来,得到最终结果

实现机制:

1,分布式并行计算,MapReduce框架由JobTracker和TaskTracker这两类服务调度的。JobTracker是主控服务,只有一个,负责调度和管理TaskTracker

2,本地计算

3,任务粒度,有利于数据的本地性,一个小数据集启动一个Map服务,M个Map任务可以在N台计算机上并行运行,用户可以指定Reduce任务的数量

4,Combine

5,分区,经过连接后可以把产生的中间结果按key的范围划分为R份

6,读取中间结果

7,任务管道

分布式数据化数据表HBase

HBase数据库是基于hadoop的项目,是针对Google的Bigtable的开源实现,它与Google的Bigtable相似

逻辑模型:

用户在表格里存储一系列的数据行,每行包含一个可排序的关键字,一个可选的时间戳及一些可能有数据的列

Hadoop的安装

可以使用虚拟机进行模拟,如果机器上没有安装SSH,安装SSH

配置安装JDK,详细步骤网上很多不一一操作了

到apache的hadoop网站上下载hadoop-0.20.2.tar.gz

使用ftp传到相应的服务器上,如果是虚拟机可以到共享文件夹下选择

复制到linux下的usr目录

tar -zxvf hadoop-0.20.2.tar.gz

解压后使用vi找到conf/hadoop-env.sh文件

打开


# The java implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/opt/jdk1.6.0_27
 
# Extra Java CLASSPATH elements. Optional.
# export HADOOP_CLASSPATH=

安装步骤:

hadoop有三种运行模式:单机模式,伪分布式模式和完全分布式模式。

在调试阶段使用单机模式

查看并且运行示例


bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output
 
cat output/*

查看到的结果如下:

[root@LinuxServer hadoop-0.20.2]# cat output/*
hadoop 1
hello 2
world 1


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
Linux 调度 KVM
《云计算架构技术与实践》读书笔记(四):XEN/KVM虚拟化引擎介绍
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/75392862 4.1  XEN/KVM虚拟化引擎 4.1.1  虚拟化架构分类 计算虚拟化技术的实现形式是在系统中加入一个虚拟化层,将下层的资源抽象成另一种形式的资源,供上层使用。
|
存储 调度 KVM
《云计算架构技术与实践》读书笔记(一):OpenStack概述
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/75370853 这位大侠,这是我的公众号:程序员江湖。
|
Linux 虚拟化 云计算
《云计算架构技术与实践》读书笔记(五):Docker 容器及其调度
5.1容器典型应用场景 Docker技术的出现和迅猛发展,已成为云计算产业的新的热点。容器使用范围也由互联网厂商快速向传统企业扩展,大量传统企业开始测试和尝试部署容器云。
|
存储 缓存 算法
|
存储 关系型数据库 数据库
|
虚拟化 云计算 Windows
|
SQL 存储 安全
云计算读书笔记(四)
微软云平台 微软的云计算机服务平台Windows Azure属于Paas模式,一般面向的是软件开发商。 当前版本包括四部分: 1)Windows Azure,位于云计算平台的最底层,是微软云计算技术的核心,是微软的云操作系统,提供了一个微软数据中心服务器上运行应用程序和存储数据的Windows环境。
914 0
|
2月前
|
存储 安全 网络安全
云计算与网络安全:技术融合的双刃剑
在数字化浪潮中,云计算如同一股不可阻挡的力量,推动着企业和个人用户步入一个高效、便捷的新时代。然而,随之而来的网络安全问题也如影随形,成为制约云计算发展的阿喀琉斯之踵。本文将探讨云计算服务中的网络安全挑战,揭示信息保护的重要性,并提供实用的安全策略,旨在为读者呈现一场技术与安全的较量,同时指出如何在享受云服务带来的便利的同时,确保数据的安全和隐私。
37 6
|
2月前
|
存储 人工智能 安全
云计算与网络安全:技术融合与挑战
在数字化时代的浪潮中,云计算和网络安全已成为推动社会进步的两大关键技术。本文将探讨云计算服务的发展,网络安全的重要性,以及信息安全技术的演进。我们将通过实例分析,揭示云服务如何增强数据保护,网络安全措施如何应对新兴威胁,以及信息安全技术的创新如何为企业带来竞争优势。文章旨在为读者提供对云计算和网络安全领域的深入理解,并展示它们如何共同塑造我们的未来。
|
2月前
|
监控 安全 网络安全
云计算与网络安全:技术挑战与解决方案
随着云计算技术的飞速发展,其在各行各业的应用越来越广泛。然而,随之而来的网络安全问题也日益凸显。本文将从云服务、网络安全和信息安全等技术领域出发,探讨云计算面临的安全挑战及相应的解决方案。通过实例分析和代码示例,旨在帮助读者更好地理解云计算与网络安全的关系,提高网络安全防护意识。