Hadoop入门

慕课网《Hadoop大数据平台架构与实践--基础篇》学习笔记

1. 初识Hadoop

历史

Google三驾马车:MapReduce, BigTable, GFS带来了革命性的变化

  • 成本降低,可以用PC机
  • 软件容错,可以使硬件故障视为常态
  • 简化并行分布式计算

Google只是公布了论文,没有公布源码。于是模仿Google的开源Hadoop出现了!

Hadoop功能

核心功能是分布式存储和分布式计算,HDFS + MapReduce

优势:高扩展,低成本,成熟的生态圈

Hadoop生态圈

  • HDFS, MapReduce,
  • HIVE: SQL语句转化成Hadoop任务,降低人们使用门槛
  • HBASE: 存储结构化数据的分布式数据库,放弃了事务特性,强调高扩展
  • ZooKeeper: 运维工具

2. Hadoop的安装(MacOS环境)

安装JAVA

略去

安装Hadoop

brew install hadoop

安装完成后,brew有这么一段提示,留用

In Hadoop's config file:
  /usr/local/opt/hadoop/libexec/etc/hadoop/hadoop-env.sh,
  /usr/local/opt/hadoop/libexec/etc/hadoop/mapred-env.sh and
  /usr/local/opt/hadoop/libexec/etc/hadoop/yarn-env.sh
$JAVA_HOME has been set to be the output of:
  /usr/libexec/java_home

随后需要配置一系列的文件

1. /usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hadoop-env.sh

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
修改为:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="

2. /usr/local/Cellar/hadoop/2.7.3/libexec/etc/hadoop/core-site.xml

<configuration>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
    <description>A base for other temporary directories.</description>
  </property>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>          
  </property>
</configuration>

3. /usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/mapred-site.xml

<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9010</value>
  </property>
</configuration>

4. /usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

5. $ hadoop namenode -format

启动HDFS

$ ./start-dfs.sh  #启动HDFS
$ ./stop-dfs.sh  #停止HDFS

3. HDFS简介

基本概念

  • 块存储,默认大小是64MB
  • NameNode:存放元数据,即文件与数据块的映射表,数据块与数据节点DataNode的映射表
  • DataNode:存放数据块
HDFS

数据管理策略

  • 每一个数据块都会存3份,两份在一个机架上,一份在另一个机架上。所以任意一个服务器挂了都不要紧。

  • 心跳检测,DataNode定期向NameNode放松心跳检测

  • Secondary NameNode:是指NameNode的备份,会定期去和NameNode同步

文件读写流程

读文件

  1. 客户端发送文件读取请求
  2. NameNode查询元数据并返回,比如A,C,D三个block,每个block要从哪里去找
  3. 客户端去从DataNode获得Block

写文件

  1. 文件拆分成Block
  2. 通知NameNode,NameNode返回可用的DataNode
  3. 客户端将Block写入相应DataNode
  4. 流水线复制,因为每个Block要存3个DataNode
  5. 更新NameNode
  6. 重复345步骤直到写完每个Block

HDFS特点

  1. 数据冗余,硬件容错
  2. 流式数据访问
  3. 存储大文件,不适合存小文件
  4. 适合一次写入多次读取

HDFS使用

总体来说和Linux特别相似

$ hadoop fs -mkdir /xueshu
$ hadoop fs -ls /
$ hadoop fs -put ~/Downloads/FinalPre.pptx /xueshu
$ hadoop fs -cat /xueshu/FinalPre.pptx
$ hadoop fs -get /xueshu/FinalPre.pptx ~
$ hadoop dfsadmin -report

4. MapReduce简介

原理

  • 分而治之,一个大任务分成多个小任务Map,并行执行后,合并结果Reduce
MapReduce

举个例子,有519999张扑克牌,是10000副扑克牌其中少了某一张,要把它找出来

  1. 把牌平均分给4个人,split
  2. 每个人去数各自手里每张牌出现了几次,map()
  3. 交换数据,每个人去统计一个花色的每张牌出现了几次,reduce(),比如A去统计红桃的每张牌出现了几次,结果计为part 0
  4. 筛选出结果

运行流程

基本概念

  • Job: 刚才的找出缺失的扑克牌
  • Task: 包括MapTask和ReduceTask任务
MapReduce2

步骤

  1. 客户端把Job发给JobTracker: 完成(1)作业调度(2)分配任务,监控任务进度(3)监控TaskTracker状态
  2. TaskTracker执行任务并汇报任务状态,下图为具体步骤
MapReduce3

容错机制

  1. 重复执行,一般重复4次
  2. 推测执行,如果某个TaskTracker特别慢,会让其他TaskTracker去做,然后取快的一个

5. 实战演练 - WordCount and Sort

略去,见之后的文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • HDFS的体系结构 设计目标 自动快速检测应对硬件错误 流式访问数据 转移计算本身比转移数据更加划算 简单的数据一...
    Spike_3154阅读 915评论 0 2
  • 1.hadoop是什么? 一个适合大数据的分布式存储和计算平台. 是一个平台,分布式的存储和分布式的计算,在平台之...
    君满楼001阅读 371评论 0 3
  • 首先,我们在使用前先看看HDFS是什麽?这将有助于我们是以后的运维使用和故障排除思路的获得。 HDFS采用mast...
    W_Bousquet阅读 4,167评论 0 2
  • 亲爱的姑娘,我有好多话想说给你听,一年后的今天,你十九岁,像花朵一样清风一般舒爽的年纪,浑身都散发着温和婉转的气息...
    JennyMengg阅读 282评论 0 6
  • 国庆七天乐 此处无声胜有声
    一抹涓流阅读 127评论 0 0