前言
本文为LINUX系统下的Hadoop分布式集群的安装与部署实训步骤分享
首次分享:望海涵,有错请及时告知。
目标:掌握Hadoop分布时集群的安装与部署具体步骤与相关经验总结
一、Hadoop平台框介绍
1.Hadoop的架构
在其核心,Hadoop主要有两个层次,即:
- 加工/计算层(MapReduce)
- 存储层(Hadoop分布式文件系统)
除了上面提到的两个核心组件,Hadoop的框架还包括以下两个模块:
- Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具
- Hadoop YARN :这是作业调度和集群资源管理的框架
Hadoop Streaming 是一个实用程序,它允许用户使用任何可执行文件(例如shell实用程序)作为映射器和/或reducer创建和运行作业。
2.HDFS:遵循主从架构,它具有以下元素。
2.1 名称节点 -Namenode
名称节点是包含GNU/Linux操作系统和软件名称节点的普通硬件。它是一个可以在商品硬件上运行的软件。具有名称节点系统作为主服务器,它执行以下任务:
- 管理文件系统命名空间。
- 规范客户端对文件的访问。
- 它也执行文件系统操作,如重命名,关闭和打开的文件和目录。
2.2 数据节点 - Datanode
Datanode具有GNU/Linux操作系统和软件Datanode的普通硬件。对于集群中的每个节点(普通硬件/系统),有一个数据节点。这些节点管理数据存储在它们的系统。 - 数据节点上的文件系统执行的读写操作,根据客户的请求。 - 还根据名称节点的指令执行操作,如块的创建,删除和复制。
2.3 块 -block
一般用户数据存储在HDFS文件。在一个文件系统中的文件将被划分为一个或多个段和/或存储在个人数据的节点。这些文件段被称为块。换句话说,数据的HDFS可以读取或写入的最小量被称为一个块。缺省的块大小为64MB,但它可以增加按需要在HDFS配置来改变
3.HDFS常用命令
- 运行jar包:hadoop jar /Users/kexin/work/projects/Hadoop/target/hadoop-0.0.1-SNAPSHOT.jar com.kexin.hadoop.units.WordCount /test/test.txt /project/wordcount/output
- 文件系统操作:hadoop fs -cat|ls|mkdir
- 上传文件:hadoop dfs -put ./testdata.txt /testdata
- 递归删除目录及文件:hadoop fs -rmr /testdata
- 删除文件:hadoop fs -rm /testdata.txt
4.MapReduce
MapReduce计划分三个阶段执行,即映射阶段,shuffle阶段,并减少阶段。
涉及到的角色:
4.1 客户端(client):
编写mapreduce程序,配置作业,提交作业,这就是程序员完成的工作;
4.2 JobTracker:
初始化作业,分配作业,与TaskTracker通信,协调整个作业的执行;
4.3 TaskTracker:
保持与JobTracker的通信,在分配的数据片段上执行Map或Reduce任务,
TaskTracker和JobTracker的不同有个很重要的方面,就是在执行任务时候TaskTracker可以有n多个,JobTracker则只会有一个(JobTracker只能有一个就和hdfs里namenode一样存在单点故障,我会在后面的mapreduce的相关问题里讲到这个问题的)
4.4 Hdfs:
保存作业的数据、配置信息等等,最后的结果也是保存在hdfs上面
- map阶段:映射或映射器的工作是处理输入数据。一般输入数据以存储在HDFS的文件或目录的形式,输入文件被传递到映射器功能线路,映射器处理该数据,并创建数据的若干小块。
- reduce阶段:这个阶段是Shuffle阶段和Reduce阶段的组合。减速器的工作是处理该来自映射器中的数据。处理之后,它产生一组新的输出,这将被存储在HDFS。
在一个MapReduce工作过程中:
- 由Hadoop发送Map和Reduce任务到集群的相应服务器
- 框架管理数据传递,例如发出任务的所有节点之间的集群周围的详细信息,验证任务完成,和复制数据
- 大部分的计算发生在与在本地磁盘上,可以减少网络通信量数据的节点
- 给定的任务完成后,将收集并减少了数据,以一个合适的结果发送回Hadoop服务器
二、CentOS集群的安装与配置
1.安装虚拟机
2.安装Xshell
3.CentOS系统配置
(1)虚拟机? 编辑-虚拟网络编辑器? nat模式
配置ip地址:192.168.8.2/3/4
(2)关闭防火墙?
service iptables stop
chkconfig iptables off
4.无密码登陆配置
(2) 实现master到slave免密登录
在master上执行 ssh localhost 会在roothome目录生成.ssh目录
执行 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 实现本地免密登录
将id_dsa.pub远程拷贝到其他机器上
scp ~/.ssh/id_dsa.pub root@Slave1:`pwd`
在Slave1电脑上执行
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
5.安装jdk
- Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具
- Hadoop YARN :这是作业调度和集群资源管理的框架
- Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具
- Hadoop YARN :这是作业调度和集群资源管理的框架
- HDFS:
- HDFS常用命令
- 运行jar包:hadoop jar /Users/kexin/work/projects/Hadoop/target/hadoop-0.0.1-SNAPSHOT.jar com.kexin.hadoop.units.WordCount /test/test.txt /project/wordcount/output
- 文件系统操作:hadoop fs -cat|ls|mkdir
- 上传文件:hadoop dfs -put ./testdata.txt /testdata
- 递归删除目录及文件:hadoop fs -rmr /testdata
- 删除文件:hadoop fs -rm /testdata.txt
- MapReduce
- map阶段:映射或映射器的工作是处理输入数据。一般输入数据以存储在HDFS的文件或目录的形式,输入文件被传递到映射器功能线路,映射器处理该数据,并创建数据的若干小块。
- reduce阶段:这个阶段是Shuffle阶段和Reduce阶段的组合。减速器的工作是处理该来自映射器中的数据。处理之后,它产生一组新的输出,这将被存储在HDFS。
- CentOS集群的安装与配置
- 安装虚拟机
- 安装Xshell
- CentOS系统配置
- 无密码登陆配置
- 安装jdk
- Hadoop的安装与配置
- 上传hadoop安装包
- 编辑配置文件core-site.xml?? hdfs-site.xml? yarn-site.xml? mapred-site.xml
- 配置从节点信息
- 集群的启动和运行
- 命令查看
- 网页查看
- 范例程序(wordcount)运行?
-
总结 HDFS优点总结: 1、支持任意超大文件存储;硬件节点可不断扩展,低成本存储(真实案例为:4000节点,目前最大5000节点); 2 、对上层应用屏蔽分布式部署结构,提供统一的文件系统访问接口,感觉就是一个大硬盘;应用无需知道文件具体存放位置,使用简单; 3、文件分块存储(1块缺省64MB),不同块可分布在不同机器节点上,通过元数据记录文件块位置;应用顺序读取各个块; 4 、系统设计为高容错性,允许廉价PC故障;每块文件数据在不同机器节点上保存3份;这种备份的另一个好处是可方便不同应用就近读取,提高访问效率。 HDFS缺点总结: 1、适合大数据文件保存和分析,不适合小文件,由于分布存储需要从不同节点读取数据,效率反而没有集中存储高;一次写入多次读取,不支持文件修改; 2、是最基础的大数据技术,基于文件系统层面提供文件访问能力,不如数据库技术强大,但也是海量数据库技术的底层依托; 3、文件系统接口完全不同于传统文件系统,应用需要重新开发。 个人实验总结:通过本次实验,简单掌握了Hadoop整体的搭建过程,电脑内存不足,搭建三台虚拟机导致电脑数次崩溃,网页查看时多次出错。在Hadoop伪分布式的安装配置过程中,遇到许许多多的问题,安装jdk,配置环境变量,安装ssh等等。同时在本次实验中认识到了自己的不足,对Linux系统不够熟悉,在以后的学习中需要进一步努力。实验考验是一个人的耐心,实验步骤要一步一步地做,每一步都要严谨认真。今后会加强对Linux系统知识的掌握,力求手到擒来。
|