大数据hadoop课程笔记

 1.课程导入

柯洁

Alpha Go是人工智能领域的里程碑。

深度学习

 大模型deepseek chatgpt

大模型 和 大数据 之间有着非常紧密的关系。可以说,大数据是大模型发展的基石,而大模型是大数据价值挖掘的重要工具。

https://youtu.be/nN-VacxHUH8?si=fj7LtkckVXm7soWR

DeepSeek刚火就要垮掉了吗?史上最通俗的AI科普!15分钟搞懂国产Ai是如何实现弯道超車的!_哔哩哔哩_bilibili

1.1.1大数据产生背景

  • TB(太字节):常见于企业级数据存储,如数据库、数据仓库等。

    • 示例:1 TB 可以存储大约 25 万张高清图片或 300 小时的视频。

  • PB(拍字节):常见于大型互联网公司、科学研究机构或政府机构的数据中心。

    • 示例:1 PB 可以存储大约 2 亿张高清图片或 3000 小时的 4K 视频。

  • EB(艾字节):全球互联网流量、大型云服务提供商的数据规模。

    • 示例:1 EB 可以存储大约 2000 亿张高清图片或 300 万小时的 4K 视频。

  • ZB(泽字节):全球数据总量的规模(例如,2020 年全球数据总量约为 64 ZB)。

  • YB(尧字节):未来的数据规模,目前尚未达到。

1.1.2 

大数据的定义

volume:体积(大量化):存储量大,增量大(TB,PB,EB)

Variety:种类多。来源多,格式多。

  •         结构化数据
  •         非结构化数据
  •         半结构化数据

Velocity:快速化

value:价值密度低

2003年,Google公司发表论文The Google File System,介绍GFS分布式文件系统,主要讲解海量数据胡可靠存储方法

2004年,Google公司发表论文 MapReduce:Simplified Data Processing on Large Clusters,介绍并行计算模式MapReduce,海量数据的高效计算方法。

2006年,Google发表国Bigtable:A distributed Storage System for Structured Data,介绍Google的大表Bigtable的设计。Bigtable是Google公司的分布式数据存储系统,是用来处理海量数据的一种非关系型数据库。

GFS思想:

数据节点:数据块

管理节点:数据元文件(文件名,文件块,文件块所在数据节点)

数据块保持:可靠性和可用性

2.hadoop实验环境搭建

1.加载镜像

实验使用的Docker镜像保存在/cg/images/hadoop_node.tar.gz文件中,执行如下命令加载该镜像:

docker load < /cg/images/hadoop_node.tar.gz

用来将一个 Docker 镜像从 .tar.gz 压缩包加载到本地的 Docker 环境中的。

2.启动实验容器

执行如下4条命令,启动4个名称分别为master、slave1、slave2、slave3的docker容器用于实验:

docker run --name master --privileged --ulimit nofile=65535:65535 --hostname master --ip 172.17.0.2 --add-host=slave1:172.17.0.3  --add-host=slave2:172.17.0.4 --add-host=slave3:172.17.0.5 -itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.shdocker run --name slave1 --privileged --ulimit nofile=65535:65535 --hostname slave1 --ip 172.17.0.3 --add-host=master:172.17.0.2  --add-host=slave2:172.17.0.4 --add-host=slave3:172.17.0.5  -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.shdocker run --name slave2 --privileged --ulimit nofile=65535:65535 --hostname slave2 --ip 172.17.0.4 --add-host=master:172.17.0.2 --add-host=slave1:172.17.0.3  --add-host=slave3:172.17.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.shdocker run --name slave3 --privileged --ulimit nofile=65535:65535 --hostname slave3 --ip 172.17.0.5 --add-host=master:172.17.0.2 --add-host=slave1:172.17.0.3  --add-host=slave2:172.17.0.4 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh

更新一下

docker run --name master --privileged --ulimit nofile=65535:65535 --hostname master --ip 172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.sh docker run --name slave1 --privileged --ulimit nofile=65535:65535 --hostname slave1 --ip 172.18.0.3 --add-host=master:172.18.0.2 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave2 --privileged --ulimit nofile=65535:65535 --hostname slave2 --ip 172.18.0.4 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave3 --privileged --ulimit nofile=65535:65535 --hostname slave3 --ip 172.18.0.5 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh

这些 docker run 命令用于启动多个 Docker 容器,配置它们的主机名、IP 地址、主机映射、文件挂载等,并运行一个启动脚本 /service_start.sh。这些容器似乎用于搭建一个 Hadoop 集群,其中包含一个 master 节点和三个 slave 节点。

删除节点的命令为:

docker rm -f master slave1 slave2 slave3

2.1.master节点

docker run --name master --privileged --ulimit nofile=65535:65535 --hostname master --ip 172.17.0.2 --add-host=slave1:172.17.0.3  --add-host=slave2:172.17.0.4 --add-host=slave3:172.17.0.5 -itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.sh

  • --name master:将容器命名为 master

  • --privileged:赋予容器特权模式,允许它访问主机上的所有设备。

  • --ulimit nofile=65535:65535:设置文件描述符的软限制和硬限制为 65535。

  • --hostname master:设置容器的主机名为 master

  • --ip 172.17.0.2:为容器分配静态 IP 地址 172.17.0.2

  • --add-host=slave1:172.17.0.3:在容器的 /etc/hosts 文件中添加一条记录,将 slave1 映射到 172.17.0.3

  • --add-host=slave2:172.17.0.4:将 slave2 映射到 172.17.0.4

  • --add-host=slave3:172.17.0.5:将 slave3 映射到 172.17.0.5

  • -itd:以交互模式运行容器,并分配一个伪终端,同时在后台运行(-d)。

  • -v /cgsrc:/cgsrc:ro:将主机上的 /cgsrc 目录挂载到容器的 /cgsrc 目录,并以只读模式(ro)挂载。

  • -v /headless/course/:/course:将主机上的 /headless/course/ 目录挂载到容器的 /course 目录。

  • hadoop_node:使用的 Docker 镜像名称。

  • /service_start.sh:容器启动后执行的脚

2.2 slave1 节点

  • --name slave1:将容器命名为 slave1

  • --hostname slave1:设置容器的主机名为 slave1

  • --ip 172.17.0.3:为容器分配静态 IP 地址 172.17.0.3

  • --add-host=master:172.17.0.2:在容器的 /etc/hosts 文件中添加一条记录,将 master 映射到 172.17.0.2

  • 其他参数与 master 节点类似。

2.3 slave2 节点

 2.4. slave3 节点

2.5 查看docker ps

docker ps 是一个 Docker 命令,用于列出当前正在运行的容器。它会显示容器的基本信息,例如容器 ID、镜像名称、启动命令、创建时间、状态、端口映射等。 

执行

docker ps

 解释:

 2.6 在终端使用如下命令进入容器中:

比如进入master容器可以使用命令:

docker exec -it --privileged master /bin/bash

3.java环境安装

在容器master中使用如下命令从资源文件夹/cgsrc中将JDK安装包复制到/usr/local/java目录下:

mkdir /usr/local/java
cp /cgsrc/jdk-8u171-linux-x64.tar.gz /usr/local/java/

 我们接下来切换到/usr/local/java目录下,将安装包解压,并删除用过的tar文件。

cd /usr/local/java/
tar -zxvf jdk-8u171-linux-x64.tar.gz
rm -f jdk-8u171-linux-x64.tar.gz

此时/usr/local/java目录下仅有一个jdk1.8.0_171目录,这就是Java主目录。

接下来需要配置JAVA_HOME环境变量,为了方便起见,这里直接在~/.bachrc这个文件中进行设置,采用这种配置方式时,只对当前登录的单个用户生效,当该用户登录以及每次打开新的Shell时,它的环境变量文件.bashrc会被读取。输入下面命令打开当前登录用户的环境变量配置文件.bashrc

vim ~/.bashrc

在文件最后面添加如下3行(注意等号前后不能有空格),然后保存退出vim:

export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

 

 接下来让环境变量生效,执行如下代码:

source ~/.bashrc
scp -r root@master:/usr/local/java root@slave1:/usr/local/java

4.ssh无密码登陆

需要让master节点可以SSH⽆密码登录到各个slave节点上。

⾸先,⽣成master节点的公钥,如果之前已经⽣成过公钥,必须删除原来的公钥,重新⽣成⼀次。具体命令如下:

cd ~/.ssh            #如果没有该目录,先执行一次 ssh localhost,密码默认为83953588abc
rm -f ./id_rsa*        #删除之前生成的公钥
ssh-keygen -t rsa    #执行该命令后,遇到提示信息,均按Enter即可

 下面这个命令是用于将一个公钥文件(id_rsa.pub)的内容追加到另一个文件(authorized_keys)中。具体来说,它的作用是将 SSH 公钥添加到授权密钥文件中,从而允许使用对应的私钥进行无密码登录。

为了让master节点能⽆密码SSH登录到本机,需要在master节点上执⾏如下命令:

cat ./id_rsa.pub >> ./authorized_keys

5.配置集群环境

vim workers

 

7.测试:

随便在那个文件夹中,进行如下操作

/input的路径在这个文件夹的完整路径是:hdfs://<namenode-host>:<port>/input

  • <namenode-host> 是 NameNode 的主机名或 IP 地址。

  • <port> 是 HDFS 的端口号(默认是 9820)。

cd share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-3.4.0.jar wordcount /input/data.txt /output

hdfs dfs -cat /output/part-r-00000

问题:

更改mapred-site.xml文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property>
</configuration>

 在原本的文档上增加了这些

<property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
<property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
<property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>

export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoopexport HADOOP_CLASSPATH=/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/share/hadoop/mapreduce/lib/*:${HADOOP_CLASSPATH}

第三周

1.

scp -r root@master:/usr/local/java root@slave1:/usr/local/java

 scp克隆  

root@master:/usr/local/java:原本要被复制的文件

root@slave1:/usr/local/java:粘贴的地方

2.ssh无密码登录

生成密钥对

ssh-keygen -t rsa 

 cat拼接,./id_rsa.pub  添加到./authorized_keys里面

cat ./id_rsa.pub >> ./authorized_keys

 ssh文件下

known_hosts记录ssh访问过计算机的公钥
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密码登录服务器公钥

hadoop安装

cp /cgsrc/hadoop-3.4.0.tar.gz /usr/local/

1.bin: 存放操作命令,具体包含如下图(hdfs,mapred,yarn)

2.etc:所有配置文件

3.include:头文件

4.lib:本地库(native库)压缩的动态链接库

5.libexec:拓展库

6.sbin:集群相关的命令

7.share:学习的资料,文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构学习第八周--Kubernetes博客搭建

目录 一、整体架构 二、部署MySQL主从 三、部署Redis哨兵 四、部署WordPress 五、注意事项 一、整体架构 本项目为在一主三从的Kubernetes集群上部署WordPress博客。因为WordPress部分容器版本自行集成Apache和PHP服务&#xff0c;因此在Kubernetes上部署WordPress只需提供…

Application.OnTime如何引用带参数的过程

Application.OnTime方法本身并不直接支持传递参数给被调用的过程。不过&#xff0c;有几种方法可以间接实现这个需求。 方法1&#xff1a;使用单引号表达式 使用单引号表达式来传递参数时&#xff0c;不能在表达式中使用变量&#xff0c;需要把参数值直接写到表达中&am…

网络安全之tcpdump工具

引言 wireshark是一款非常不错的抓包软件&#xff0c;在图形化界面占绝对统治地位&#xff1b;尽管其在字符界面下有些许选项可供使用&#xff0c;但终究不太方便&#xff0c;下面我再介绍一款NB的终端抓包工具 tcpdump 1、混杂模式 linux的网卡有混杂模式一说&#xff0c;当开…

VC++ 获取目的IP的路由

GetBestRoute 函数获取到目的IP的最佳匹配路由。 第一个参数为&#xff1a;destination&#xff08;目的IP&#xff09; 第二个参数为&#xff1a;source&#xff08;源IP&#xff09; 通常不需要指定第二个source&#xff0c;这个一般用来匹配具体某一个网卡接口路由的&…

JavaScript 模块 vs C# 类:封装逻辑的两种哲学

引言 在现代软件开发中&#xff0c;模块化和面向对象设计是代码组织的核心课题。本文通过对比 JavaScript 模块&#xff08;ES6 Module&#xff09;与 C# 类&#xff08;Class&#xff09;的实现方式&#xff0c;探讨两种语言在封装逻辑时的不同哲学&#xff0c;并给出实际应用…

大模型在甲状腺癌诊疗全流程预测及方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 国内外研究现状 二、大模型预测甲状腺癌的理论基础 2.1 甲状腺癌相关医学知识 2.2 大模型技术原理与特点 2.3 大模型在医疗领域的应用潜力 三、术前预测方案 3.1 预测模型构建 3.1.1 数据收集与预处理 …

electron+vue+webview内嵌网页并注入js

vue内嵌网页可以使用iframe实现内嵌网页&#xff0c;但是只能通过postMessage间接通信&#xff0c;在electron环境下&#xff0c;vue可以直接使用webview来内嵌网页&#xff0c;支持 executeJavaScript、postMessage、send 等丰富的通信机制。 使用 webview的优势 性能更佳&…

leetcode日记(95)将有序数组转换为二叉搜索树

很简单&#xff0c;感觉自己越来越适应数据结构题目了…… /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : va…

【threejs实战教程一】初识Three.js,场景Scene、相机Camera、渲染器Renderer

Three.js是一个基于WebGL的JavaScript 3D图形库&#xff0c;用于在浏览器中创建和显示3D内容 Three.js中最基础的三个关键要素就是场景Scene、相机Camera、渲染器Renderer 通俗一点理解&#xff0c;场景就是我们生活中一个具体的场景&#xff0c;比如自然环境中的一栋建筑&…

【leetcode hot 100 138】随机链表的复制

解决一&#xff1a;回溯 哈希表 本题要求我们对一个特殊的链表进行深拷贝。如果是普通链表&#xff0c;我们可以直接按照遍历的顺序创建链表节点。而本题中因为随机指针的存在&#xff0c;当我们拷贝节点时&#xff0c;「当前节点的随机指针指向的节点」可能还没创建&#xf…

木马查杀之AST初识篇

一、AST 定义 抽象语法树&#xff08;Abstract Syntax Tree&#xff0c;AST&#xff09;是源代码的一种抽象表示形式。它以树状结构描述源代码的语法构成&#xff0c;树上的每个节点都对应源代码中的一个语法结构或元素&#xff0c;像变量声明、函数调用、表达式等。通过这种结…

vscode接入DeepSeek 免费送2000 万 Tokens 解决DeepSeek无法充值问题

1. 在vscode中安装插件 Cline 2.打开硅基流动官网 3. 注册并登陆&#xff0c;邀请码 WpcqcXMs 4.登录后新建秘钥 5. 在vscode中配置cline (1) API Provider 选择 OpenAI Compatible &#xff1b; (2) Base URL设置为 https://api.siliconflow.cn](https://api.siliconfl…

如何在保持安全/合规的同时更快地构建应用程序:DevOps 指南

随着敏捷思维方式的兴起&#xff0c;开发和 DevOps 团队都面临着持续的压力&#xff0c;他们需要以迭代方式缩短发布周期并加快部署速度&#xff0c;以满足不断增长的客户期望。随着这种对速度的追求越来越强烈&#xff0c;维护安全性和合规性标准的复杂性也随之增加。 当今 D…

Java中常见的PO、VO、DAO、BO、DO、DTO、POJO、Query类解释(通俗易懂)

文章目录 先点击收藏和点赞,切勿白嫖,感谢一丶PO(persistant object)持久对象二丶VO(value object)值对象三丶DAO(Data Access Objects) 数据访问对象接口四丶BO/DO(Business Object) 业务对象层五丶DTO(Data Transfer Object) 数据传输对象六丶POJO(Plain Old Java Objects) 简…

Websocket的基本使用

1. WebSocket WebSocket 是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它在现代 Web 开发和网络应用中发挥着重要作用。在 WebSocket 出现之前&#xff0c;实现服务器与客户端实时通信主要采用轮询Polling和长轮询Long - Polling等技术。轮询是客户端定时向服务器发…

MySQL安装及基础操作

以下是基于MySQL 8.4.3版本&#xff08;在Win11上&#xff09;的安装&#xff1a; 1.mysql的获取 官网&#xff1a;www.mysql.com 也可以从Oracle官方进入&#xff1a;https://www.oracle.com/ 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 两者…

基于6自由度搬运机器人完成单关节伺服控制实现的详细步骤及示例代码

以下是基于6自由度搬运机器人完成单关节伺服控制实现的详细步骤及示例代码&#xff1a; 1. 系统概述 单关节伺服控制是指对机器人的单个关节进行精确的位置、速度或力矩控制。在6自由度搬运机器人中&#xff0c;每个关节通常由伺服电机驱动&#xff0c;通过反馈传感器&#x…

虚拟机新挂载磁盘后磁盘无法使用ssh问题 Permission denied (publickey).

在给vmware虚拟机挂载磁盘后再新磁盘目录里面使用ssh拉取代码一直报错: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. manifests: 虚拟机可以添加硬盘,…

每天五分钟深度学习框架PyTorch:ResNet算法模型完成CAFIR十分类

本文重点 ResNet模型已经搭建完成了&#xff0c;本文我们使用ResNet来跑一下CAFIR10的数据集&#xff0c;看一下分类效果如何&#xff1f; 代码 本文总结 在之前的课程中我们对残差块以及ResNet模型进行了详细的介绍&#xff0c;并且我们对模型训练这些基础的数据集进行了详…

Python网络爬虫与数据采集实战——网络爬虫的基本流程

网络爬虫&#xff08;Web Scraper&#xff09;是用于自动化地从互联网上抓取信息的程序。它广泛应用于搜索引擎、数据采集、市场分析等领域。本文将详细探讨网络爬虫的基本流程&#xff0c;包括URL提取、HTTP请求与响应、数据解析与存储&#xff0c;以及一个实际的爬虫示例。文…