Download presentation
Presentation is loading. Please wait.
1
云计算平台Hadoop的部署
2
目录 Hadoop简介 Hadoop的部署 HDFS (Hadoop Distributed File System) MapReduce
预备条件:ssh,jvm 参数设置:conf/* 启动hdfs和mapreduce 运行MapReduce任务
3
历史 : Apache Nutch : Google 发表 GFS 和 MapReduce相关论文 Apache 在Nutch中实现HDFS和MapReduce : Hadoop 项目从Nutch中分离 2008年7月,Hadoop赢得Terabyte Sort Benchmark Hadoop Wins Terabyte Sort Benchmark: One of Yahoo's Hadoop clusters sorted 1 terabyte of data in 209 seconds, which beat the previous record of 297 seconds in the annual general purpose (Daytona) terabyte sort benchmark. This is the first time that either a Java or an open source program has won.
4
Doug Cutting Hadoop项目负责人 同时也是Nutch, Lucene的负责人
09年8月离开yahoo!,加入Cloudera Doug Cutting Hadoop项目负责人
5
Hadoop简介 数据为中心(data-centered)
支持高可用的(high availability),可扩缩 (scalable)的分布式计算的开源软件 海量非结构的数据分析 日志分析 Google, Facebook, Yahoo!, Amazon, Baidu, Renren, Tencent… By There are 36 data centers in all—19 in the U.S., 12 in Europe, 3 in Asia, and one each in Russia and South America. Baidu - the leading Chinese language search engine Hadoop used to analyze the log of search and do some mining work on web page database We handle about 3000TB per week Our clusters vary from 10 to 500 nodes Hypertable is also supported by Baidu
6
HDFS Fault-tolerant, 容错性 Run on commodity hardware,在通用的机器上运行
Scalable 可扩缩的 1个 namenode 多个 datanodes 容错性的保证是用校验码或者用冗余,HDFS是用冗余 Commodity hardware 普通pc,不是大型的服务器 可扩展,最重要的特性:访问量的增加,传统的架构的做法…可扩咱架构的做 法…
7
HDFS NameNode DataNode 存贮HDFS的元数据(metadata) 管理文件系统的命名空间(namespace)
创建、删除、移动、重命名文件和文件夹 接收从DataNode来的Heartbeat 和 Blockreport DataNode 存贮数据块 执行从Namenode来的文件操作命令 定时向NameNode发送Heartbeat和Blockreport 重点介绍的概念: Metadata Metadata和data之间的同步 7 7
8
Heartbeat和Blockreport
Datanode 1 Namenode Metadata: <1,(1,2)> <2,(2,3) > <3,(1,3)> 1 1,3 3 1,2 Datanode 2 1 2 2,3 1、保证metadata和data的一致 2、namenode用这样的机制来探测datanode是dead的还是alive,并在发现 datanode死机的时候重新生成副本 Datanode 3 2 3
9
Data Flow File Read 先读NameNode,获得数据块的信息,再去读相应的DataNode中的数据。
避免所有数据都从NameNode获取,使得NameNode成为性能瓶颈 9 9 9
10
Data Flow File Write 10 10 10
11
MapReduce 编程模型(program model),软件包 Map Reduce
把要处理的数据组合成一个个的<key, value>对(pair) Reduce 把具有相同key的pair聚集在一起,计算一个 新的value,从而得到一个新的<key, value> 并输出。 编程模型:计算方法,计算模式,一种思考问题的方法,一种处理问题的方法 ,把这些处理问题的方法实现在一个软件包里。 用这个软件包的时候就用了这种处理问题的方法。
12
Mapreduce 控制 一个Jobtracker 多个tasktrackers 数据流
13
MapReduce Jobtraker (Master) Tasktracker (Worker) 接收任务(job)的提交
提供任务的监控(monitoring)和控制(control) 把job划分成多个tasks,交给Tasktracker执行,并管 理这些tasks的执行 Tasktracker (Worker) 管理单个task的map任务和reduce任务的执行
14
Word count: file0 file1 file2 files <word, count>
hello world file1: hello mapreduce file2: bye bye file0 <“hello”, 1> <“world”, 1> <0, “hello world”> Input files file1 <“hello”, 1> <“mpareduce”, 1> <0, “hello mapreduce”> <“hello”, 2> <“world”, 1> <“mapreduce”, 1> <“bye”, 2> file2 <“bye”, 2> <0, “bye bye”> files <line offset, line content> <word, count> <word, count> files
15
目录 Hadoop简介 Hadoop的部署 运行MapReduce任务
HDFS (Hadoop Distributed File System) MapReduce Hadoop的部署 预备条件:ssh,jvm 参数设置:conf/* 启动hdfs和mapreduce 运行MapReduce任务
16
目标Hadoop 机群 Master NameNode Jobtracker slave0 DataNode0 TaskTracker0
17
目录 Hadoop简介 Hadoop的部署 运行MapReduce任务
HDFS (Hadoop Distributed File System) MapReduce Hadoop的部署 预备条件:ssh,jvm 参数设置:conf/* 启动hdfs和mapreduce 运行MapReduce任务
18
预备条件0 三台机器 操作系统相同,在同一局域网 一个专门用于hadoop安装的用户 node50 ip:11.11.11.50
19
预备条件0 修改/etc/hosts, 添加三台机器的机器名和 ip映射(三台机器都要做) #vim /etc/hosts
20
预备条件0 创建专门用于hadoop安装的用户名(三台 机器都要做) #useradd –m hadoop #passwd hadoop
以#开头的命令是指在root权限下执行的命令 以$开头的命令是指在专门用于hadoop的用户下执行的命令
21
预备条件1 jvm:Sun JavaTM 1.6.x 检查是否已经安装: 安装java1.6
$java –version 如果返回1.6则已经安装,否者要 下载java 1.6并且安装 安装java1.6 下载程序包
22
预备条件1 给下载下来的文件添加可执行权限 执行文件,才生一个rpm文件 双击执行rpm文件 #chmod 755 XXXXXX
23
预备条件1 添加java环境变量 $vim ~/.bashrc 其中JAVA_HOME的位置要确认一下安装 的目录是否是这个位置
在文件最后添加以下三行 export JAVA_HOME=/usr/java/default export CLASSPATH=.:JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin $source ~/.bashrc 其中JAVA_HOME的位置要确认一下安装 的目录是否是这个位置 再次检查java版本
24
预备条件2 使master可以以无密码的方式ssh登录到 slaves上 生成各台机器的private key和public key
$ssh-keygen (对所有提问按enter) 把master的public key拷贝到它自己和 slaves机器上,把slaves上的public key拷贝 到master上 $ssh-copy-id XXX
25
预备条件2
26
目录 Hadoop简介 Hadoop的部署 运行MapReduce任务
HDFS (Hadoop Distributed File System) MapReduce Hadoop的部署 预备条件:ssh,jvm 参数设置:conf/* 启动hdfs和mapreduce 运行MapReduce任务
27
Master节点下载hadoop-0.20.2 从renren网镜像下载Hadoop文件 解压 重命名解压后的文件夹为hadoop
$wget mirror//hadoop/core/stable/hadoop tar.gz 解压 重命名解压后的文件夹为hadoop
28
Master节点下载hadoop $wget $ tar –xf hadoop tar.gz $mv hadoop hadoop
29
设置conf/*里的文件 1. hadoop-env.sh 2. core-site.xml 3. mapred-site.xml
4. slaves 5. masters
30
conf/hadoop-env.sh 添加JAVA_HOME变量 export JAVA_HOME=/usr/java/default
31
conf/core-site.xml 添加fs.default.name Hdfs://node50:9000, node50是主节点名
32
conf/mapred-site.xml 添加mapred.job.tracker
33
conf/slaves 添加slaves机器名
34
conf/masters 添加secondary master
35
同步hadoop文件夹 把hadoop文件夹复制到slaves节点的相同 位置 $scp –r hadoop node51:~
36
目录 Hadoop简介 Hadoop的部署 运行MapReduce任务
HDFS (Hadoop Distributed File System) MapReduce Hadoop的部署 预备条件:ssh,jvm 参数设置:conf/* 启动hdfs和mapreduce 运行MapReduce任务
37
Hadoop的命令bin/* dfs shell guide:
38
hdfs的格式化(format) 格式化hdfs $hadoop namenode -format
39
启动hdfs和mapreduce
40
Hdfs的web界面
41
Jobtracker的web界面
42
目录 Hadoop简介 Hadoop的部署 运行MapReduce任务
HDFS (Hadoop Distributed File System) MapReduce Hadoop的部署 预备条件:ssh,jvm 参数设置:conf/* 启动hdfs和mapreduce 运行MapReduce任务
43
准备WordCount.java html 把WordCount.java放到主节点的家目录下 编译WordCount.java,并打包生成的文件到wordcount.jar
44
准备输入文件夹 在hdfs中建立文件夹input 本地建立file01和file02,并把它上传到hdfs的input文件 夹中
45
运行WordCount
46
查看结果
47
Reference Google papers: Hadoop links:
MapReduce: GFS: Hadoop links: rial.html
Similar presentations