首页 > 其他分享 >第一周学习总结

第一周学习总结

时间:2024-07-13 21:09:16浏览次数:11  
标签:总结 第一周 hadoop Hadoop 学习 ssh NameNode 数据 节点

开篇概述

随着计算机网络基础设施的完善,社交网络和电商的发展以及物连网的推进,产生了越来越多的大数据,使得人工智能最近几年也有了长足的发展(可供机器学习的样本数据量足够大了),大数据的存储和处理也越来越重要,国家对此也比较重视(可上网搜索关键字“大数据白皮书”关键字,以了解详细情况),会长决定和年轻人也一块儿学习一下,于是报了网易云课堂的课程,不定时将学习到的东西整理为博客,此乃开篇。

学习大数据必先学习Hadoop,因为它是目前世界上最流行的分布式数据处理框架。

Tips:所谓大数据,是指数据量庞大、产生数度快、结构多样的价值密度低的数据。其中,数据量庞大是指数据规模超出了1,2台高性能主机所能处理范围;结构多样性是指除了关系型数据库能够处理的结构化数据还包含半结构化数据(如各类传感设备必如地镑、卫星、GPS设备等产生的纯文本格式的数据,还有良心网站NASA官网公布的txt格式的空间天气数据等成行成列的数据)和非结构化数据(视频、图像等)。这些数据的价值密度普遍较低(和具体的应用范围也有关系,比如NASA的数据,如果想知道某天的太阳射电情况,看当天发布的txt就好了,价值密度很高,但是这就不算大数据了,因为需要采集的数据量很小;如果想知道过去N年太阳射电的极值就需要处理很多数据,这些数据的价值密度就低了),大数据处理的目的就是从价值密度的数据里把有价值的数据过滤分析出来。

Hadoop概述

Hadoop是一个用于分布式大数据处理的编程框架。同时它也是个大数据处理完整的生态系统,围绕着Hadoop,这个生态系统还包括但不限于:

  • HBase
  • Hive
  • Pig
  • Spark
  • ZooKeeper

希望本系列的写作能够坚持下去,对上述内容都有所涉及吧。

Hadoop能干什么

假设老王在某不知名IT公司工作,由于最近太阳活动异常,引起了领导的外甥的读硕士的同学的关注,领导让老王把山西铁岛太阳射电望远镜观测到的近30年的太阳射电数据下载下来,让老王从里面找到最高的记录。老王毕竟搞挨踢已有多年,虽然技术不行,终日碌碌无为,但多年的直觉告诉老王这个很简单。老王立刻下载了其中一个文件并大致看了文件的机构:数据保存在txt文件里,每行N列,其中包含了时间和数据信息列,大约每0.1s记录一条数据,一个文件记录15分钟的数据,大约有9000条记录,1个小时4个文件,1天96个文件,30年大约1051200个文件,一共大约100亿条数据,这其中还有一些损坏的文件,还有一些用9999表示的未检测到值的占位数据需要特殊照顾。

老王觉得单机处理这些数据耗时太久,于是老王找来一些公司淘汰下来的旧服务器(一般小公司最破的机器都是服务器),准备每个机器负责一部分,最后把结果汇总,老王在开发的过程中还是遇到了很多问题,比如,如何分配任务,有的机器破,有的机器新,还有的文件大,有的文件小,总是不能保证所有的任务一起完成,先完成任务的机器闲置浪费掉了资源;还有最后把结果通过网络通信汇总起来,如何保证数据不丢失,不覆盖;还有如果某台机器出了问题,如何重新分配任务,这些非核心业务的开发使得老王心力憔悴,还好,老王最后找到了Hadoop这个工具,这个工具给老王提供了一个简单的编程模型,老王在map方法中写了分配的任务的逻辑,在reduce方法中写了合并结果的逻辑,然后Hadoop帮老王完成了其他所有事情,Hadoop就是干这个的。以上故事纯属虚构,如有雷同,实属巧合。

其实上述意淫的例子里的数据量不是很大,如果每天产生上TB级别的数据,就算是速度很快的固态硬盘也需要小时级时间才能读取一遍,速度还是远远跟不上,终归有上限,而且高性能主机价格不菲,不如把数据分开放到一个相对廉价又可扩展的计算机集群中,每个节点上运行一段程序并处理一小块数据,然后在汇总处理结果,使用Hadoop可以让开发者不必把精力放在集群的建设上,采用Hadoop提供的简单的编程模型就可以实现分布式处理。

Hadoop的构造模块

Hadoop集群中运行的守护进程共有5类:

  • NameNode
  • DataNode
  • Secondary NameNode
  • JobTracker
  • TaskTracker

Hadoop集群中的机器(节点)分为2类:主节点和从节点,NameNode、JobTracker所在节点为主节点(负责管理),DataNode和TaskTracker所在节点为从节点(负责干活儿)。

NameNode

NameNode节点负责将一个文件分成若干文件块,并记录了HDFS文件系统中的文件块放了在哪些DataNode中(一个数据块被冗余地放到1个或多个DataNode节点中),一个集群中只有一个NameNode节点(Hadoop2.X中情况有所不同了),且该节点通常不再运行DataNode和TaskTracker守护进程。

DataNode

DataNode实际管理很多NameNode分配给它的很多数据块,当有文件块变动时会通知NameNode,同时也从NameNode接受指令。一个集群中有多个DataNode节点,DataNode之间也会保持联系,复制冗余文件块,这样当一个DataNode出现故障后不会影响到文件的完整性。

Secondary NameNode

SNN只与NameNode通信,定时获取HDFS元数据的快照,一个集群只有一个SNN,且SNN所在节点只运行SNN守护进程,不干其它的事情。当NameNode出现故障后,可以人工启用SNN作为NameNode。

JobTracker

JobTracker负责分配MapReduce任务给TaskTracker,负责监控任务的执行,如任务失败后重启任务。JobTracker守护进程运行在主节点上,通常该节点不运行DataNode和TaskTracker守护进程。

TaskTracker

TaskTracker负责完成JobTracker分配的任务并和JobTranker进行通信,回报情况。TaskTracker守护进程运行在多个子节点上

看图说话

2016-07-23 22-22-32屏幕截图.png-15.8kB
上图中,NameNode和JobTracker是分开的,如果集群规模不大也可以运行在同一个节点上(如果这个节点出现故障该如何恢复?)

安装Hadoop

在安装Hadoop之前需要先安装如下软件:

  • JDK
  • ssh
  • sshd
  • ssh-kengen

我用的是Ubuntu16.04,已经预装了ssh和ssh-kengen了,只需要安装jdk和sshd,可以通过执行命令which命令来检查是否安装了某软件,如which sshd

安装JDK8

下载压缩包解压即可:
sudo mkdir /usr/local/lib/jvm
sudo tar -zxv -f ~/setupFiles/jdk-8u101-linux-x64.tar.gz -C /usr/local/lib/jvm
配置环境变量:
修改 /etc/profile文件,追加:
export JAVA_HOME=/usr/local/lib/jvm/jdk1.8.0_101 export PATH=$JAVA_HOME/bin:$PATH
配置完毕后执行命令source /etc/profile,此刻通过echo $JAVA_HOME应该能看到刚才设置的了。

安装sshd

sudo apt install openssh-server
安装完了sshd后应该可以通过ssh lcoalhost命令远程访问了,但是需要输入密码,Hadoop集群节点间要进行通信需要配置为无密码登录方式。

无密码ssh登录设置

执行如下命令:

  • ssh-keygen -t rsa
  • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • chmod 0600 ~/.ssh/authorized_keys
    其中,执行ssh-keygen命令时一路回车不要输入密码,执行完毕后会在/home/userName/.ssh路径下生成公钥和私钥id_rsa和id_rsa.pub。如果一切顺利的话,现在可以通过ssh localhost无密码登录了

安装Hadoop

我下载的是1.0.4版本(2.X版本和1.X版本有着很大的差别,还是先学会1.X再看2.X吧,我们的课程也是以1.X为例的,事实上我刚才下的2.X,发现很多东西不懂,又退回1.X了,

标签:总结,第一周,hadoop,Hadoop,学习,ssh,NameNode,数据,节点
From: https://www.cnblogs.com/luoqingci/p/18300718

相关文章

  • 第二周学习总结
    分布式文件系统主要用来解决如下几个问题:读写大文件加速运算对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整个硬盘的容量的文件,这时需要将文件分割为若干较小的块,然后将这些块按照一定的规则分放在集群中若干台节点......
  • Python学习笔记36:进阶篇(二十五)pygame的使用之事件监听控制切歌和暂停,继续播放
    前言基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。我们的下一步目标是完成pythoncrashcourse中的外星人入侵项目,这是一个2D游戏项目。在这之前,我们先简单学习一下pygame模块。私信我发送消息python资料,......
  • hadoop学习
    作为一个开源框架,Hadoop让大数据处理变得更加简便而高效。学习Hadoop对于处理大规模数据集是一个非常有价值的技能。Hadoop不仅仅是一个技术框架,更是一种处理大数据的思维方式。它通过将数据划分为多个小块,并在集群中的多个节点上并行处理,从而实现了对海量数据的快速处理。Hadoop......
  • 从零学习的JAVAday8~day14
    在安装eclipse时我们直接打开eclipse官网我们点击下载并安装到合适的位置即可。打开eclipse后我们就可以创建Java文件了然后再创建一个Java类,这样我们就可以在里面写我们第一个java代码了这就是我们的第一个代码,意思为输出“helloworld”。我们可以看到运行代码后输出了“he......
  • 暑假第二周总结
     本周主要学习了如何配置hadoop,真的是超级麻烦。本周完成了对Linux系统的学习,安装了vm虚拟机,配置了3个centos虚拟机,完成了虚拟机之间的免密登录等一系列的操作,虚拟机配置了java环境,hadoop环境,部署了HDFS集群。了解了大数据的软件生态、Hadoop是什么以及为什么需要分布式存储。......
  • Hadoop和Hive学习笔记
    Hadoop基础知识什么是Hadoop?Hadoop是Apache软件基金会下的一个开源项目,它允许对大型数据集进行分布式处理。Hadoop的核心组件包括HDFS(Hadoop分布式文件系统)和MapReduce编程模型。HDFS用于存储海量数据,而MapReduce则用于分布式计算。Hadoop的核心组件HDFS(HadoopDistributed......
  • 2024/07/13(暑假学习hadoop第一周总结)
    在本周的学习中,我构建了学习Hadoop所需的基础环境,这包括安装虚拟机VMware和部署CentOS操作系统。这些步骤是学习Hadoop开始,也为是深入学习Hadoop技术做好前置的准备工作。下面将详细介绍如何安装VMware和部署CentOS系统:首先,我们需要下载VMware软件并进行安装。在安装过程中,请务必......
  • hadoop学习
    安装和配置Hadoop:(1)下载配置虚拟机(ip主机防火墙)。下架jdk(环境变量)和hadoop(根据网上教程进行查询测试)创建Web应用程序:创建一个Web应用程序,用于与Hadoop交互。Python语言来编写应用程序。集成Hadoop客户端库:在的Web应用程序中,需要引入Hadoop的客户端库,以便能够与Hadoop......
  • 暑期每周总结
     每周总结 这一周,我进行大数据技术的学习和应用。首先,我成功配置了Hadoop的YARN和Hive。YARN是Hadoop的资源管理器,它在集群上管理和调度计算资源,而Hive是一个基于Hadoop的数据仓库工具,它提供了类似SQL的查询语言,用于分析存储在Hadoop分布式文件系统(HDFS)中的大数据。通过这次配......
  • 每周总结:hadoop学习
    在大数据时代的背景下,Hadoop作为一种开源的分布式处理框架,为我打开了一扇通往高效数据处理的大门。通过对Hadoop的学习,我不仅掌握了其核心组件的工作原理,还体验到了分布式计算的强大威力。Hadoop的核心之一HDFS(HadoopDistributedFileSystem),以其高可靠性和高扩展性,为大数据......