大數據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.pswp.cn/news/897540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897540.shtml
英文地址,請注明出處:http://en.pswp.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;以及一個實際的爬蟲示例。文…