HDFS 的概念以及为分布式的安装
修改主机名:vi /etc/sysconfig/network
修改映射:vi /etc/hosts
hadoop:
Hadoop的特点:
hadoop 是一个开源的 灵活的 可扩展的 可分布式存储和 就计算的平台
hadoop 允许使用简单模型出来集群上的海量数据集
Hadoop集群可以从单个节点扩展到上千的节点
Hadoop的集群容错 不依赖与硬件 而是依赖本身平台设计 和应用软件层 来容错
Hadoop的思想:来源于谷歌的三篇论文(gfs ma-preduce bigtable)还没有开源
Hadoop的历史:06 年发行的第一个版本
Hadoop的版本演变:cdh (cloudra发行的) hdp(hot works) apache (阿帕奇)
三个版本:
apache 0.X
apache 1.X
apache 2.X
apache 3.X
主讲Hadoop2.X
hadoop的安装目录:
./bin ---------存储Hadoop的操作命令文件
./sbin-----------存储Hadoop的启动停止等服务命令
./etc---------hadoop的集群配置文件
./share-----------源码或者测试jar包 和学习文档
./lib-------依赖库和扩展(.so)
Hadoop的安装模式:
local model (也叫standalon):单机版 利于测试
pesudo model : 为分布式
distribution model :全分布式
单机版的安装:
解压配置环境变量
Hadoop三个核心:
HDFS : 对数据进行存储
mapReduce : 分布式 离线 并行 计算框架(基于yarn的 并行处理海量数据集)
Yarn : 任务调度与 资源管理
HBase: 非结构化的数据 存储到 HBase
HDFS:Hadoop DIstributed File System
1易于扩展的 分布式文件系统
2运行在大量廉价机器上 提供容错机制
3为大量用户提供性能不错的 文件存储服务
HDFS设计目标:
1 自动快速检测 应对 硬件错误
2 流式访问数据
3 移动计算 比 移动数据 本身更划算
4 简单一致性 模型 (主要提供读 一次写多次读)
5 异构 平台 可移植 (Windows Linux 都可以部署 Linux的各个版本 都可以)
HDFS的特点:
优点:有高容错功能 高可靠 高扩展 高效性
个服务:
1 namenode(名字节点 --老大) matedata (元数据 -----描述数据的数据)
2 secondarynamenode (秘书--帮助namenode )
3 datanode (数据块 数据的存 和 取 )
HDFS 的架构图
========伪分布式的安装======
1 解压配置
2 配置配置文件:
vi ./etc/hadooop/hadoop-env.sh 告诉Hadoop jdk的位置vi ./etc/hadoop/core-site.xml namenode 起在哪个服务器上面 指定HDFS的命名空间vi ./etc/hadoop/hdfs-site.xml 添加如下:<property><name>dfs.replication</name> 指定副本参数<value>1</value></property><property><name>dfs.namenode.name.dir</name> 指定namedode 的元数据存储目录<value>/home/hadoopdata/dfs/name</value></property><property><name>dfs.datanode.data.dir</name> 指定datanode 的数据存储目录:<value>/home/hadoopdata/dfs/data</value></property>
3 格式化HDFS 文件系统
hadoop/hdfs namenode -format
4 启动HDFS 模块的服务
启动命令:./sbin/start-dfs.sh
5测试
1先检测服务是否 按照正常启动 ----- 查看Java虚拟机进程:jps2查看web ui 监控是否正常 ------- 查看50070端口:3 进行文件读写操作
如下:
1 告诉Hadoop jdk的位置
[[email protected] hadoop-2.7.1]# cd /usr/local/hadoop-2.7.1/[[email protected] hadoop-2.7.1]# vi ./etc/hadoop/hadoop-env.sh修改Java_home的地址
2 namenode 起在哪个服务器上面 指定HDFS的命名空间
[[email protected] hadoop-2.7.1]# vi ./etc/hadoop/core-site.xml
3指定副本参数
[[email protected] hadoop-2.7.1]#vi ./etc/hadoop/hdfs-site.xml
3.1指定namedode 的元数据存储目录
3.2 指定副本数
指定datanode 的数据存储目录:
指定namenode 的数据存储目录:
配置完成
4 启动
首先格式化一下文件系统:
文件格式化:
代表成功格式化
格式化后 已经有了namenode 的元数据 可以查看:
启动:
写yes root 用户的密码 因为没有ssh 免密码登录
然后5 测试:
查看Java虚拟机进程:
2 查看web ui 监控是否正常
查看50070端口:
3 进行文件读写操作
和本地读取的一样:
通过索引可以快速找到块文件
tail命令用于输入文件中的尾部内容
[[email protected] hadoop-2.7.1]# tail -1000 ./logs/hadoop-root-namenode-hadoop01.log 查看文件的后1000行
元数据的位置:ll /home/hadoopdata/dfs/name/current/
fsimage (镜像文件) 和 edit(日志文件) 里
日志文件的内容 最终要合并到镜像文件里
机架 ----可以放多个数据块
一个块 128MB
主从节点通讯:
Hadoop2.X允许有两个老大
Hadoop3.X允许3-5个老大s
读数据的流程:
写数据流程:
Namenode:
元数据的管理
IO的请求
元数据 在 开启的时候就 加载到内存里面
元数据 要定时copy 多份存储 以防丢失后 无法找回
namenode 启动过程
安全模式下 只提供读 不提供写
HDFS 系统不适合存储小文件
HIVE 基于 HDFS 会做小文件合并
安全模式:
启动时 进入安全模式
运维时 进入安全模式
小与等于0 自动离开安全模式
大于1 永久进入安全模式
手动进入安全模式的命令:
当块有损坏时: hdfs fsck 检测缺失块
* -move: 移动损坏的文件到/lost+found目录下
* -delete: 删除损坏的文件
* -files: 输出正在被检测的文件
* -openforwrite: 输出检测中的正在被写的文件
* -includeSnapshots: 检测的文件包括系统snapShot快照目录下的
* -list-corruptfileblocks: 输出损坏的块及其所属的文件
* -blocks: 输出block的详细报告
* -locations: 输出block的位置信息
* -racks: 输出block的网络拓扑结构信息
* -storagepolicies: 输出block的存储策略信息
* -blockId: 输出指定blockId所属块的状况,位置等信息
日志的三种级别:
info 正常
warn 警告 不影响程序 可以忽略
error 影响 一般要处理