什么是Hadoop?
海量数据处理的一个技术(软件工具)
Hadoop中有3个核心组件
1.分布式文件系统(HDFS)——实现将文件分布式存储在很多服务器上,功能是管理文件,实际上是一个软件
2.分布式运算编程框架(MapReduce)——实现在很多机器上分布式并行运算
3.分布式资源调度平台(yarn)——帮用户调度大量的MapReduce程序,并合理分配运算资源
HDFS的整体的运行机制
hdfs集群组成结构
hdfs有着文件系统共同的特征:
有目录结构,顶层目录是: /
系统中存放的就是文件
系统可以提供对文件的:创建、删除、修改、查看、移动等功能
hdfs跟普通单机文件系统的区别:
单机文件系统中存放的文件,是在一台机器的操作系统中
hdfs的文件系统会横跨N多的机器
单机文件系统中存放的文件,是在一台机器的磁盘上
hdfs文件系统中存放的文件,是落在n多机器的本地单机文件系统中(hdfs是一个基于linux本地文件系统之上的文件系统)
hdfs的工作机制:
1.客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:datanode),准确来说:切块的行为是由客户端决定的
2.一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:namenode)
3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)
综上:一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!
搭建hdfs分布式集群
安装hdfs集群的具体步骤
一、首先需要准备N台linux服务器/虚拟机(4台虚拟机:1个namenode节点 + 3 个datanode 节点)
二、修改各台机器的主机名和ip地址
三、从windows中用CRT软件进行远程连接
在windows中将各台linux机器的主机名配置到的windows的本地域名映射文件中:
c:/windows/system32/drivers/etc/hosts
设置linux服务器的基础软件环境
1.防火墙
关闭防火墙:service iptables stop
关闭防火墙自启: chkconfig iptables off
2.安装jdk:(hadoop体系中的各软件都是java开发的)
3.集群内主机的域名映射配置
安装hdfs集群
一、上传hadoop安装包到hdp-01集群任一节点(master)
tar -zxvf 软件包 -C 指定安装文件夹
二、修改配置文件
1.指定Hadoop的默认文件系统为hdfs
2.指定hdfs的namenode节点为哪台机器
3.指定namenode软件存储元数据的本地目录
4.指定datanode软件存放文件块的本地目录
三、进入安装目录
cd etc/hadoop/
1.vi hadoop-env.sh
修改:
export JAVA_HOME=/root/apps/jdk # jdk 安装位置
2.vi core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000/</value> #namenode设置成master </property> </configuration>
3.vi hdfs-site.xml
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/root/data/name</value> #存储元数据的本地目录 </property> <property> <name>dfs.datanode.data.dir</name> <value>/root/data/data</value> #存放文件块的本地目录 </property> #防止单点故障的配置 <property> <name>dfs.namenode.secondary.http-address</name> <value>hdp1:50090</value> </property> </configuration>
4.配置Hadoop的环境变量 要运行hadoop的命令,需要在linux环境中配置HADOOP_HOME和PATH环境变量
vi /etc/profile
export HADOOP_HOME=/root/apps/hadoop-2.8.4 #hadoop 安装位置 export PATH=.:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存之后,别忘了 source /etc/profile使配置生效
5.把这台机器安装的Hadoop拷贝到其他机器
scp -r hadoop-2.4.8 hdp1:$PWD
四、初始化namenode的元数据目录
要在master上执行hadoop的一个命令来初始化namenode的元数据存储目录
hadoop namenode -format
1.创建一个全新的元数据存储目录
2.生成记录元数据的文件fsimage
3.生成集群的相关标识:如:集群id——clusterID
五、启动Hadoop
单独启动
hadoop-daemon.sh start namenode
启动完后,首先用jps查看一下namenode的进程是否存在
然后,在windows中用浏览器访问namenode提供的web端口:50070
http://master:50070
然后,启动众datanode们(在任意地方)
hadoop-daemon.sh start datanode
补充:
Namenode监听两个端口——9000(客户端和namenode交互);50070(namenode内置的服务器)
用自动批量启动脚本来启动HDFS
先配置master到集群中所有机器(包含自己)的免密登陆
配完免密后,可以执行一次 ssh 0.0.0.0
修改hadoop安装目录中/etc/hadoop/slaves(把需要启动datanode进程的节点列入)
vi slaves 加入节点名称
启动/停止
1.master上用脚本:start-dfs.sh 来自动启动整个集群
2.如果要停止,则用脚本:stop-dfs.sh