1. Hadoop概述
1.1 Hadoop历史
Apache Lucene -> Nutch -> Hadoop(受Google两篇重要论文启发:Google File System,MapReduce)
1.2 创建本地Hadoop集群
环境:Linux+JDK
配置jdk环境变量:export JAVA_HOME=/opt/jdk1.8.0_40/
export PATH=/opt/jdk1.8.0_40/bin:${PATH}
1)下载安装:http://hadoop.apache.org/releases.html
2)设置环境
设置环境变量:export HADOOP_HOME=/opt/hadoop-1.2.1
export PATH=/opt/hadoop-1.2.1/bin/${PATH}
设置用户路径
修改配置文件: 编辑hadoop-env.sh里的JAVA环境
3)配置SSH免密码登录
ssh -keygen
1.3 创建托管Hadoop集群
Amazon Web Service——亚马逊云服务EC2、S3、EMR
2. Hadoop架构介绍
2.1 HDFS的体系结构
设计目标:1)自动快速检测应对硬件错误
2)流式访问数据
3)转移计算比移动数据本身更划算
4)简单一致性模型(一次写入、多次读取)
5)异构平台可移植
基本概念:
1)机架
2)数据块(最基本的存储单元,默认大小64M)
3)元数据(镜像文件+日志文件)
4)用户数据:以数据块的形式存储在多个datanode上
主从节点的通信:
心跳机制,TCP通信
写入数据流程:
2.2 MapReduce的体系结构
思想:
分布式编程架构
以数据为中心,更看重吞吐率分而治之
Map将一个任务分解成多个子任务
Reduce将分解后多任务分别处理,并将结果汇总为最终结果
基本概念:
作业、任务、键值对(Map()、Reduce()函数的输入输出都是<key,value>形式)
生命周期:
2.3 Hadoop的运行模式
单机模式:默认模式
不对配置文件进行修改
使用本地文件系统
Hadoop的守护进程未启动
伪分布模式:
在一台主机上模拟多主机每个守护进程都以Java进程的形式运行
在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互
修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml
格式化文件系统:hadoop namenode -format
完全分布式模式:
多台主机所有主机安装JDK和Hadoop
设置SSH免密码登录
修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml
格式化文件系统