三分钟了解hadoop
HADOOP简介
一.大数据思维
1.什么是大数据思维
分而治之:把一个复杂的问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的中间结果,把各部分的中间结果组成整个问题的最终结果。
并行:提升速度的关键 分布式运行 计算与数据在一起 计算向数据移动
二.Hadoop的历史
1.三篇论文
GFS----HDFS
MapReduce---MapReduce
BigTable----HBase
2.Hadoop Models
Hadoop Common:基础型模块。RPC调用,Socket通信
Hadoop Distributed File System 分布式文件系统,用于存储大数据的信息
Hadoop YARN 资源协调框架
Hadoop MapReduce 大数据计算框架
Hadoop Ozone: 对象存储框架
Hadoop Submarine: 机器学习引擎
3.分布式文件系统
1.分布式文件系统架构
FS File System
文件系统是基于硬盘之上的一个文件管理的工具
我们用户操作文件系统可以和硬盘进行解耦
DFS Distributed File System:
分布式文件系统
将我们的数据存放在多台电脑上存储
分布式文件系统有很多,
HDFS是mapreduce计算的基础
2.分布式架构的原理
-
如何拆分
-
数据都是以字节数组的方式存放在硬盘上
-
如果我们将文件分成两份,相当于将字节数组分成两份
-
888 KB (909,312 字节)
-
444KB 454,656字节
-
444kB 454,656字节
-
-
如果我们能将这两个数组再合并到一起,文件就会恢复成原来的样子
-
如果文件特别大,需要切分成N份,相当于切分成了N个字节数组
-
如何拼接? 10 20 30 40
-
-
为了记录每个子块(子字节数组)所属的位置,可以记录子块在整个文件的偏移量
-
数组都有对应的索引(下标),可以快速的定位数据
-
-
-
拆分大小
-
拆分之后块的大小要一致
-
如果大小不一致,很难通过偏移量来计算它的位置
-
如果数据块不一致,在多节点中拉取数据的时间不一致
-
分布式计算每台机器计算出结果的时间要相对一致
-
进行分布式算法设计的时候,数据不统一,算法很难设计
-
-
在H1默认大小为64M,在H2及其以后,默认大小为128M
-
同一个文件中,所有块的大小要完全一致,除了最后一个块
-
不同文件中,块的大小可以不同
-
块的数量= Ceil(总大小/每块的大小);
-
1024M 100M 11块
-
10M 1M 10块
-
-
问题
-
切的太整齐了,将一个完整的数据切分到两个块
-
-
-
数据安全
-
将数据备份多份
-
默认每一个数据都有三个备份
-
数据备份数不成超过节点数
-
-
数据规则
-
HDFS中一旦文件被存储,数据不允许被修改
-
修改会影响偏移量
-
修改会导致数据倾斜
-
修改数据会导致蝴蝶效益
-
-
但是可以被追加,但是不推荐
-
一般HDFS存储的都是历史数据
-
3.节点划分
NameNode:管理节点
DataNode:存储数据
三.搭建伪分布式
1.克隆一台虚拟机
按照之前linux搭建方法:修改IP地址,修改主机名称
2.设置免密钥登录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id root@192.168.61.200 ~/.ssh/id_rsa.pub (按照上一步设置的IP进行登录)
3.上传Hadoop压缩包并移动到指定路径下
tar -zxvf hadoop-2.6.5.tar.gz
mv hadoop-2.6.5 /opt/sxt
4.设置环境变量
vim /eyc/profile
添加Hadoop路径 export HADOOP_HOME=/opt/sxt/hadoop-2.6.5 (以实际安装路径为主)
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
5.修改配置文件
文件路径:/opt/sxt/hadoop-2.6.5/etc/hadoop
(1)修改关于jdk的配置文件
文件hadoop-env.sh中修改jdk安装路径 25行
文件mapred-env.sh中修改jdk安装路径 16行
文件yarn-env.sh中修改jdk安装路径 23行
(2)修改核心配置文件
core-site.xml文件中添加
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/sxt/hadoop/local</value>
</property>
hdfs-site.xml文件中添加
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:50090</value>
</property>
6.格式化
hdfs namenode -format
7.启动
start-dfs.sh
8.访问
9.开始使用命令创建目录
hdfs dfs -mkdir -p /user/root
hdfs dfs -put apache-tomcat-7.0.61.tar.gz /user/root
hdfs dfs -D dfs.blocksize=1048576 -put jdk-7u67-linux-x64.rpm /user/root