推荐收藏系列!2万字图解Hadoop
今天我用图解的方式讲解pandas的用法,内容较长建议收藏,梳理不易,点赞支持。
学习 Python 编程,给我的经验就是:技术要学会分享、交流,不建议闭门造车。一个人可能走的很快、但一堆人可以走的更远。如果你希望技术交流,可以关注我(或者私信)
整理不易,关注一下吧ღ( ´・ᴗ・` )比心🤔
第一部分:初识Hadoop
1.Hadoop介绍
- Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
- 主要解决海量数据的存储和海量数据的分析计算的问题。
- 广义上来说,Hadoop 通常是指一个更广泛的概念——Hadoop 生态圈。
2.Hadoop的版本
hadoop的三大发行版本:Apache、Cloudera、Hortonworks。
- Apache版本最原始(最基础),对入门学习最好。
- Cloudera内部集成了很多大数据框架,对应产品CDH。
- Hortonworks文档较好,对应产品HDP 。
- Hortonwork和Cloudera合并
3.Hadoop的特点
高可靠性:Hadoop底层维护多个数据副本,即使某个计算单元存储出现故障,也不会导致数据丢失。
- 高拓展性:在集群之间分配任务数据,可方便的扩展数以万计节点。
- 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
- 高容错性:能够自动将失败的任务重新分配。
4.Hadoop的组成
Hadoop1.X版本的组成,MapReduce负责计算和计算所需的cpu、内存等资源的调度
Hadoop2.X版本的组成,增加了Yarn进行资源调度,原来的MapReduce只负责计算。
Hadoop3.X版本的组成没啥区别,在细节上还是有区别的。
5.HDFS
HDFS(Hadoop Distributed File System)是一个分布式文件系统。
大致是这样的:将一个很大的文件拆成很多部分,然后存储在一个个DataNode中,而NameNode中只存储DataNode的位置信息,2NN对NameNode进行备份(害怕NameNode挂掉,然后丢失所有信息。)
- NameNode(nn):存储文件的元数据,如文件名、文件目录结构、文件属性,以及每个文件的块列表和块所在的DataNode等。
- DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
- Secondary NameNode(2nn):每隔一段时间对NameNode进行备份。
6.YARN
YARN(Yet Another Resource Negotiator),是一种资源协调者,是Hadpood的资源管理器。
- ResourceManager(RM):整个集群资源(内存、CPU)的老大。
- NodeManager(NM):单个节点服务器资源老大。
- ApplicationMaster(AM):单个任务运行的老大。
- client:客户端
- Container:容器,相当于一台独立的服务器,里面封装了运行所需的资源,如内存、CPU、磁盘、网络等。
- 客户端可有多个、集群上可有运行多个ApplicationMaster、每个NodeManager上可以有多个Container.
7.MapReduce
MapReduce将计算过程划分为两个阶段:MAP和Reduce
1.Map阶段并行处理输入数据。
2.Reduce阶段对Map结果进行汇总。
100T的数据已经被分被存储到很多台服务器上,如果需要找寻某个资料,我们就可以要求各个服务器并行寻找自己的电脑上有没有对应的内容,然后把结果告诉汇总服务器。
8.HDFS、YARN和MapReduce三者的关系
9.大数据处理的过程
第二部分:Hadoop之配置java与hadoop环境
我们学习hapood,需要在系统中配置JAVA和Hadoop环境,今天我们就来使用Xshell配置对应环境。一个hadoop服务器需要这些东西,我们今天的文章只配置java和hadoop环境。
1.打开虚拟机连接xshell
我这里有三台hadoop虚拟机,我们来配置其中一台的环境,其他2台利用复制的手段就能够安装完成。我们先来配置hadoop103的环境。
打开Xshell连接上hadoop103.
2.进入到我们安装软件的文件夹
这里的文件夹可以自己设置,只要记得自己东西在哪就行,我一般放在/opt/software目录下。
3.将文件复制到该目录下
我们这里使用Xftp将文件从window下拷贝进来,点击Xftp,
把java压缩包和hadoop压缩包拖过来。
传输完成后我们看看linux中有这俩包吗?
4.解压缩文件安装java的JDK
将JDK解压到 /opt/modul/文件夹下
tar - zxvf jdk-8u212-linux-x64.tar.gz -c/opt/modul/
然后就会出来解压过程,等他完成就行。
我们来到解压缩的文件夹下,看到文件已经复制成功。
cd/opt/moudl/
5.配置java的JDK的环境变量
使用命令进入环境变量文件夹
cd jdk1.8.0_212/
sudo cd /etc/profile.d/
11
这个样子:
我们在这里创建一个.sh结尾的文件,将它放在这里,然后系统启动时就会加载这个文件,从而加载环境变量。
sudo vim my_env.sh
在文件里输入以下内容:
#JAVA_HOME
JAVA_HOME=/opt/moudl/jdk1.8.0_212
exprot PATH:$JAVA_HOME/bin
输入完之后保存关闭
保存完毕重启服务
source /etc/profile
java
重启后输入java就行。
出现以下内容说明成功!
6.解压缩Hadoop的压缩包
将hadoop解压到 /opt/moudl/文件夹下
tar -zxvf hadoop-3.1.3.tar.gz -c/opt/modul/
结果如下:
然后又出现复制的过程信息。就行了。
7.配置Hadoop的环境变量
cd/opt/modul/hadoop-3.1.3/
来到该文件夹下后
修改环境变量文件。
sudo vim /etc/profile.d/my_env.sh
添加如下内容
#HADOOP_HOOM
export HADOOP _HOOM =/opt/modul/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOOM/sbin
添加完后是这样的
保存之后重启资源
source /etc/profile
hapood
出来一大串就成功了
配置结束
第三部分:Hadoop之文件复制scp和同步rsync
众所周知,Hadoop主要有三种运行模式
- 单机模式(服务器一台,数据由linux管理)
- 伪分布式模式(服务器一台,数据由HDFS管理)
- 完全分布式模式(服务器节点很多,数据分布在多台设备HDFS管理)
目前主要学习完全分布式模式。配置完全分布式的步骤如下:
我们这一章主要是进行文件的拷贝(因为只完成了一台客户机的环境配置)
1.scp介绍命令
可以实现服务器与服务器数据之间的拷贝
scp -r $pdir/$fname $user@host:$pdir/$fname
命令 递归 要拷贝的文件名/名称 目的地用户/主机:目的的路径/名称
2.拷贝文件
2.1我们将hadoop102上的文件拷贝到hadoop103上
scp -r jdk1.8.0_212/ liuc1997@hadoop103:/opt/modul/
然后叫你输入密码,就开始复制了。来hadoop103看一下,复制成功!
2.2 我们这次在hadoop103上将hadoop102上的文件拿过来
scp -r liuc1997@hadoop102:/opt/modul/hadoop-3.1.3 ./
然后就会叫你输入hadoop102的密码。
然后就会出现复制的进程,最后结束后查看一下:
没有问题。
2.3利用hadoop103将hadoop102的数据拷贝到hadoop104上
这是两个跟自己毫无关系的服务器也可以操控他们。
scp -r liuc1997@hadoop102:/opt/modul/* liuc1997@hadoop104:/opt/modul/
依次输入hadoop102和hadoop104的密码
然后就开始了。来到hadoop104上看一下,复制成功。
2.rsync介绍命令
上面介绍的复制命令scp是指把整个文件夹都拷贝过来,而同步是指对两个文件的差异部分进行更新。 第一次同步等同于拷贝
可以实现服务器与服务器数据之间的同步
rsync -av $pdir/$fname $user@host:$pdir/$fname
命令 显示复制过程 要同步的文件名/名称 目的地用户/主机:目的的路径/名称
2.1复制差异信息
我们在hadoop102的主机上hadoop-3.1.3文件下先创建一个文件hello.txt,然后将该文件复制给hadoop104,看看效果。
将更改后的文件复制给104主句
rsync -av hadoop-3.1.3/ liuc1997@hadoop104:/opt/modul/hadoop-3.1.3/
然后飞快的运行之后,在104的主机上就能看见这个文件。
2.2制作同步脚本
我们cd~到用户目录下,创建一个bin目录
cd ~
mkdir bin
cd bin
vim xsync
将下面内容粘过去,我们就创建了一个文件同步工具
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#遍历所有机器
for host in hadoop102 hadoop103 hadoop104
doecho ___________________host_________________#3.遍历所有目录,挨个发送for file in $@do#4.判断文件是否存在if [ -e $file ]then#5.获取父目录pdir=$(cd -P $(dirname $file); pwd)#获取文件夹名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelse echo $file does not exists!fi done
done
然后我们cd ~ 输入
同步三台机器的bin目录
xsync bin/
第四部分:Hadoop之SSH免密登录
我们使用大数据技术时,经常需要访问成百上千台其他服务器,每次都需要输入密码,很繁琐,于是需要配制SSH免密登录提高效率。
1. SSH原理
SSH的原理就是服务器A将自己的公钥给另一台服务器B,代表我俩可以进行访问,然后服务器A用自己的私钥]进行加密数据然后发送给B,B接受后利用A的公钥解密数据知道了A要什么,然后B把A所要的数据利用A的公钥加密传输给A。这就完成了数据传输的流程。
2. 配置SSH
先转到自己的用户目录下
cd ~
然后查看所有文件包括隐藏文件。
ls-al
查看是否存在.ssh/的文件,如果没有就输入
ssh-keygen -t rsa
三次回车。出现以下结果,说明成功了。
然后再查看
ls -al
就会发现存在.ssh/文件,我们cd进去发现多了两个文件,这两个文件就是SSH的公钥和私钥,我们需要将公钥复制给我们需要访问的服务器。
复制公钥给服务器hadoop102:
ssh-copy-id hadoop102
配置完后给再给hadoop103
ssh-copy-id hadoop103
完成之后就可以通过SSH命令免密访问其他服务器了.
ssh hadoop102
第五部分:Hadoop之集群配置和启动集群(完全分布式)
在经历过前面的环境配置后,接下来我们进行Hadoop的集群配置,什么叫做集群配置,这里是指我们将每个服务器配置成功后,每台服务器的Hadoop并没有连接起来,我们需要进行配置,将Hadoop平台连接,具体内容如下:
1.集群部署
安装模块如上:但这里有几点需要注意
- NameNode和SecondaryNameNode不要放在一台服务器上,因为NameNode和SecondaryNameNode都很消耗资源。
- ResourceManager 也很消耗内存,不要和NameNode和SecondaryNameNode配置在一台服务器上。
2.配置文件
Hadoop的配置文件分为两大类,一类是默认配置文件,一类是自定义配置文件。当用户想修改某些默认配置文件时,才需要自定义配置文件。
2.1默认配置文件
2.2自定义配置文件
具体看一下所在位置:
配置core-site.xml
我们在core-site.xml插入如下语句:
<property><name>fs.defaultFS</name><value>hdfs://hadoop102:8080</value></property><!-- 指定hadoop运行时产生文件的存储目录--><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.1.3/data</value></property>
配置hdfs-site.xml
<!--nn的web-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property><!-- nn2的web访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
配置yarn-site.xml
<!--指定MR走shuffle-->
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager的地址-->
<property><name>yarn.resourcemanager.hostname</name><value>hadoop103</value>
</property>
<!--环境变量继承-->
<property><name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
配置mapred-site.xml
<!--指定mapreduce运行在yarn上-->
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
3.分发文件
我们将配置好的文件分发给其他服务器
xsync hadoop/
4.启动集群
4.1配置workers
启动集群之前,我们需要配置workers
vim /opt/modul/hadoop-3.1.3/etc/hadoop/workers
添加一下内容,不要有空格!
然后分发workers
xsync workers
4.2启动集群
4.2.1配置HDFS
第一次启动集群,需要在hadoop102主机上格式化NameNode(格式化NameNode会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到以往数据。如果集群在运行中报错,需要重新格式化NameNode的话,一定要先停止namenode和DataNode进程,并且要删除所有机器的data和logs目录,再进行格式化。)
#格式化HDFS
hdfs namenode -fromat
没有报错的话,就会出来这两个文件。
报错了一定要终止进程并删除掉data和logs这两个文件
##终止进程的命令
stop-all.sh
检查一下文件内容,有这些东西就是没有问题了。
接下来我们转到hadoop-3.1.3目录下进入sbin目录
这里有一个start-dfs.sh启动集群的命令。
接着输入以下命令:
#启动集群
sbin/start-dfs.sh
hadoop102启动成功:
hadoop103启动成功:
hadoop104启动成功:
访问网址,会出现以下结果
hadoop102:9870
4.2.2配置YARN
我们的yarn资源ResourceManager是需要在hadoop103上配置,一定要在hadoop103!一定要在hadoop103!一定要在hadoop103!
#启动yarn
sbin/start-yarn.sh
jps后出现以下界面
hadoop103出现:
hadoop102出现:
hadoop104出现:
yarn的外部界面
hadoop102:8088
相关文章:

推荐收藏系列!2万字图解Hadoop
今天我用图解的方式讲解pandas的用法,内容较长建议收藏,梳理不易,点赞支持。 学习 Python 编程,给我的经验就是:技术要学会分享、交流,不建议闭门造车。一个人可能走的很快、但一堆人可以走的更远。如果你…...
Python高级篇(08):生成器
一、生成器定义和作用 定义:Python中,一边循环一边计算的机制,生成器对象也是迭代器对象,支持for循环、next()方法…等。作用:循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而…...
力扣100114. 元素和最小的山形三元组 II(中等)
题目描述: 给你一个下标从 0 开始的整数数组 nums 。 如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 : i < j < knums[i] < nums[j] 且 nums[k] < nums[j] 请你找出 nums 中 元素和最小 的山形三元组…...
LuatOS-SOC接口文档(air780E)--lcdseg - 段式lcd
常量 常量 类型 解释 lcdseg.BIAS_STATIC number 没偏置电压(bias) lcdseg.BIAS_ONEHALF number 1/2偏置电压(bias) lcdseg.BIAS_ONETHIRD number 1/3偏置电压(bias) lcdseg.BIAS_ONEFOURTH number 1/4偏置电压(bias) lcdseg.DUTY_STATIC number 100%占空比(d…...
实现图像处理和分析的关键技术
在计算机视觉中,我们可以利用摄像头捕捉到的图像来进行各种分析和处理。以下是一些常见的计算机视觉任务: 对象检测:识别图像中的特定对象并标注其位置。人脸识别:识别和验证人脸身份。姿态估计:估计人体的姿态和动作…...

【C++学习笔记】内联函数
1. 概念 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。 如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数…...

macOS Sonoma 14.1RC(23B73)发布
黑果魏叔10 月 18 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14.1 RC更新(内部版本号:23B73),本次更新距离上次发布隔了 7 天。 macOS Sonoma 14.1RC(23B73)的更新内容主要包括以下方面&…...

数据结构数组 Array 手写实现,扩容原理
数组数据结构 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型数据的集合。 数组的特点: 数组是相同数据类型的元素集合(int 不能存放 double)数组中各元素的存储是有先…...

工作中几个问题的思考
对于需要并行多公司并行处理的任务,方案是什么? 多线程、并行流、并发库(ExecutorService、Futrue、Callable),分布式计算(1)按照公司ID分片 (2)按照业务类型分片 处理…...

Jmeter的性能测试
性能测试的概念 定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。 由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试…...

IntelliJ IDEA 2020.2.1白票安装使用方法
先安装好idear Plugins 内手动添加第三方插件仓库地址:https://plugins.zhile.io 搜索:IDE Eval Reset插件进行安装 输入https://plugins.zhile.io 手动安装离线插件方法 安装包可以去笔者的CSDN资源库下载 安装mybaties插件...

【UCAS自然语言处理作业一】利用BeautifulSoup爬取中英文数据,计算熵,验证齐夫定律
文章目录 前言中文数据爬取爬取界面爬取代码 数据清洗数据分析实验结果 英文数据爬取爬取界面动态爬取 数据清洗数据分析实验结果 结论 前言 本文分别针对中文,英文语料进行爬虫,并在两种语言上计算其对应的熵,验证齐夫定律github: ShiyuNee…...

微信小程序之个人中心授权登录
🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 ,越幸运。 1.了解微信授权登录 微信登录官网: 小程序登录https://developers.weixin.qq.com/miniprogram/d…...

Elasticsearch的聚集统计,可以进行各种统计分析
说明: Elasticsearch不仅是一个大数据搜索引擎,也是一个大数据分析引擎。它的聚集(aggregation)统计的REST端点可用于实现与统计分析有关的功能。Elasticsearch提供的聚集分为三大类。 度量聚集(Metric aggregation):度量聚集可以用于计算搜…...
Webpack 理解 input output 概念
一、介绍 如果还没用过 Webpack 请先阅读 Webpack & 基础入门 再回头看本文。 Webpack 的核心只做两件事,输入管理(Input Management)和输出管理(Output Management),什么花里胡哨的插件和配置都离不…...

【字符函数】
✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 🎈相关博文:字符串函数(一)、字符串函数(二) 字符函数 字符函数1.字符分类函数1.1 iscntrl - 判断是否是控制字符1.2 i…...

git创建与合并分支
文章目录 创建与合并分支分支管理的概念实际操作 解决冲突分支管理策略Bug分支Feature分支多人协作 创建与合并分支 分支管理的概念 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码…...

【电子通识】USB TYPE-A 2.0/3.0连接器接口
基础知识 USB TYPE-A连接器又可称为USB-A,现在不少PC、PC周边、手机充电器等等都依然采用了这种扁平的矩形接口,是目前普及度最高的USB接口了。 USB-A亦有分为插头与插座。常见的USB-A数据线的A端就是插头,而充电器上的则是插座。插头和插座…...
org.apache.sshd的SshClient客户端 连接服务器执行命令 示例
引入依赖 <dependency><groupId>org.apache.sshd</groupId><artifactId>sshd-core</artifactId><version>2.9.1</version></dependency>示例代码,可以直接执行,也可以做替换命令、维护session等修改 p…...

STM32 裸机编程 03
MCU 启动和向量表 当 STM32F429 MCU 启动时,它会从 flash 存储区最前面的位置读取一个叫作“向量表”的东西。“向量表”的概念所有 ARM MCU 都通用,它是一个包含 32 位中断处理程序地址的数组。对于所有 ARM MCU,向量表前 16 个地址由 ARM …...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

职坐标物联网全栈开发全流程解析
物联网全栈开发涵盖从物理设备到上层应用的完整技术链路,其核心流程可归纳为四大模块:感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性,例如传感器选型需平衡精度与…...

英国云服务器上安装宝塔面板(BT Panel)
在英国云服务器上安装宝塔面板(BT Panel) 是完全可行的,尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎,虽然官方主要面向中国大陆…...
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
Nginx1.24编译时,报LuaJIT2.x错误, configuring additional modules adding module in /www/server/nginx/src/ngx_devel_kit ngx_devel_kit was configured adding module in /www/server/nginx/src/lua_nginx_module checking for LuaJIT 2.x ... not…...