我爱编程机器学习与数据挖掘大数据

Hadoop入门

2017-04-01  本文已影响0人  C就要毕业了

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

1. 初识Hadoop

历史

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

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

Hadoop功能

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

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

Hadoop生态圈

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简介

基本概念

HDFS

数据管理策略

文件读写流程

读文件

  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简介

原理

MapReduce

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

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

运行流程

基本概念

MapReduce2

步骤

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

容错机制

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

5. 实战演练 - WordCount and Sort

略去,见之后的文章

上一篇 下一篇

猜你喜欢

热点阅读