Hadoop學習(1)-hdfs安裝及其一些操作

来源:https://www.cnblogs.com/wpbing/archive/2019/07/23/11230989.html
-Advertisement-
Play Games

hdfs:分散式文件系統 有目錄結構,頂層目錄是: /,存的是文件,把文件存入hdfs後,會把這個文件進行切塊並且進行備份,切塊大小和備份的數量有客戶決定。 存文件的叫datanode,記錄文件的切塊信息的叫namenode Hdfs的安裝 準備四台linux伺服器 先在hdp-01上進行下麵操作 ...


hdfs:分散式文件系統

有目錄結構,頂層目錄是:  /,存的是文件,把文件存入hdfs後,會把這個文件進行切塊並且進行備份,切塊大小和備份的數量有客戶決定。

存文件的叫datanode,記錄文件的切塊信息的叫namenode

Hdfs的安裝

準備四台linux伺服器

先在hdp-01上進行下麵操作

  1. 配置功能變數名稱映射

vim /etc/hosts

主機名:hdp-01  對應的ip地址:192.168.33.61

主機名:hdp-02  對應的ip地址:192.168.33.62

主機名:hdp-03  對應的ip地址:192.168.33.63

主機名:hdp-04  對應的ip地址:192.168.33.64

  1. 更改本機的功能變數名稱映射文件

c:/windows/system32/drivers/etc/hosts

192.168.33.61  hdp-01

192.168.33.62  hdp-02

192.168.33.63  hdp-03

192.168.33.64  hdp-04

  1. 關閉防火牆

service iptables stop 

setenforce 0

  1. 安裝jdk

在linux中 tar –zxvf jdk-8u141-linux-x64.tar.gz –C /root/apps/

然後vim /etc/profile

export JAVA_HOME=/root/apps/ jdk1.8.0_141

export PATH=$PATH:$JAVA_HOME/bin

然後source /etc/profile

Ok

  1. 安裝scp

yum install -y openssh-clients

yum list

yum list | grep ssh

  1. 配置免密登錄(在hdp-01上)

輸入ssh-keygen

然後三次回車

 

然後

ssh-copy-id hdp-02

ssh-copy-id hdp-03

ssh-copy-id hdp-04

 

  1. 然後開始安裝hadoop

上傳壓縮包,然後

[root@hdp-01 ~]# tar -zxvf hadoop-2.8.1.tar.gz -C apps/

然後修改配置文件

要點提示

核心配置參數:

1)         指定hadoop的預設文件系統為:hdfs

2)         指定hdfsnamenode節點為哪台機器

3)         指定namenode軟體存儲元數據的本地目錄

4)         指定datanode軟體存放文件塊的本地目錄

1) 修改hadoop-env.sh

export JAVA_HOME=/root/apps/ jdk1.8.0_141

 

2) 修改core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://hdp-01:9000</value>

</property>

</configuration>

 

3) 修改hdfs-site.xml

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>/root/hdpdata/name/</value>

</property>

 

<property>

<name>dfs.datanode.data.dir</name>

<value>/root/hdpdata/data</value>

</property>

 

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hdp-02:50090</value>

</property>

 

</configuration>

 

  1. 然後配置hadoop的環境變數 vi /etc/profile

export HADOOP_HOME=/root/apps/hadoop-2.8.1

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

  1. 講apps下的東西和/etc/profile和/etc/hosts/都拷貝到其他的機器上

scp -r /root/apps/hadoop-2.8.1  hdp-02:/root/apps/

scp -r /root/apps/hadoop-2.8.1  hdp-03:/root/apps/

scp -r /root/apps/hadoop-2.8.1  hdp-04:/root/apps/

  1. 初始化元數據目錄

hadoop namenode –format(在hdp-01上)

然後啟動namenode進程

hadoop-daemon.sh start namenode

然後,在windows中用瀏覽器訪問namenode提供的web埠:50070

http://hdp-01:50070

hadoop內部埠為9000

然後,啟動眾datanode們(在任意地方)

hadoop-daemon.sh start datanode

 

 

增加datanode隨時可以,減少可不能瞎搞。。。。

或者一種方便的啟動方法

修改hadoop安裝目錄中/etc/hadoop/slaves(把需要啟動datanode進程的節點列入)

hdp-01

hdp-02

hdp-03

hdp-04

 

在hdp-01上用腳本:start-dfs.sh 來自動啟動整個集群

如果要停止,則用腳本:stop-dfs.sh

 

hdfs的客戶端會讀以下兩個參數,來決定切塊大小、副本數量:

切塊大小的參數: dfs.blocksize

副本數量的參數: dfs.replication

 

上面兩個參數應該配置在客戶端機器的hadoop目錄中的hdfs-site.xml中配置

<property>

<name>dfs.blocksize</name>

<value>64m</value>

</property>

 

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

 

 

至此完成

 

hdfs的一些操作

查看目錄信息

hadoop fs -ls /

 

上傳文件從/xxx/xx上傳到/yy

hadoop fs -put /xxx/xx /yyy

 

hadoop fs -copyFromLocal /本地文件  /hdfs路徑   ##  copyFromLocal等價於 put

 

hadoop fs -moveFromLocal /本地文件  /hdfs路徑  ## 跟copyFromLocal的區別是:從本地移動到hdfs中

 

 

下載文件到本地

hadoop fs -get /hdfs路徑 /local路徑

 

hadoop fs -copyToLocal /hdfs中的路徑 /本地磁碟路徑   ## 跟get等價

hadoop fs -moveToLocal /hdfs路徑  /本地路徑  ## 從hdfs中移動到本地

 

追加內容到已存在的文件

hadoop fs -appendToFile /本地文件   /hdfs中的文件

 

其他命令和linux的基本差不多只不過前面加hadoop fs –

 

 

 

額外知識

1.

元數據:對數據的描述信息,namenode記錄的就叫元數據

2.

配置yum源配置文件

先將那個磁碟掛載到一個文件夾下比如/mnt/cdrom

 

 

然後配置yum

 

 

 

 

 

 

 

改為這樣的

 

 

 

3.

命令netstat –nltp 監聽埠號

或者ps –ef是查看進程號

4.

 

讓防火牆每次開機不重啟

chkconfig iptables off

service的執行腳本放在  /etc/service下

凡是能使用   service 服務  動作 的指令

都可以在/etc/init.d目錄下執行

例如:  /etc/init.d/sshd start

使用 service 服務 動作  例子  service papche2 restart

其實是執行了一個腳本

/etc/init.d apache2 restatr

 

linux伺服器啟動的時候分為6個等級

0.表示關機

1.單用戶模式

2.無網路的多用戶模式

3.有網路的多用戶模式

4.不可用

5.圖形化界面

6.重新啟動

具體和預設的啟動等級可以在 /etc/inittab目錄下查看

 

查看各個級別下服務開機自啟動情況  可以使用  chkconfig --list

 

增加一個自啟動服務 chkconfig --add 服務名   例如  chkconfig --add sshd

減少一個自啟動服務 chkconfig --add 服務名    例如   chkconfig --del sshd

chkconfig --level 等級 服務  off/on  

chkconfig是當前不生效,Linux重啟之後才生效的命令(開機自啟動項)

service是即使生效,重啟後失效的命令

 

5.

C語言寫的東西和平臺是有關係的,在Windows下寫的東西放到linux不一定可以

而java可以,因為有java虛擬機

6.

Hdfs的url  hdfs://hdp-01:9000/

 

ll –h

 

在類 Unix 系統中,/dev/null 稱空設備,是一個特殊的設備文件,它丟棄一切寫入其中的數據(但報告寫入操作成功),讀取它則會立即得到一個 EOF。

而使用 cat $filename > /dev/null 則不會得到任何信息,因為我們將本來該通過標準輸出顯示的文件信息重定向到了 /dev/null 中。

使用 cat $filename 1 > /dev/null 也會得到同樣的效果,因為預設重定向的 1 就是標準輸出。 如果你對 shell 

 

7

Cat 來拼接兩個文件,如在hdfs下的兩個block文件

 

 

如此拼接就成了一個完整的源文件

源文件的路徑在

 

 

 

 

java客戶端的api

//官方文檔

//先把hadoop安裝包解壓後的share目錄下的hadoop目錄下的相關jar包都拷到你的esclipe下。

//http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

//會先預設讀取classpath中載入的core-default.xml.hdfs-default.xml core-size.xml....

//這些都是一個個jar包,你也可以在src目錄下自己寫一個hdfs-site.xml文件

 

Configuration conf = new Configuration();

conf.set("dfs.replication","2");//指定副本數

conf.set("dfs.blocksize","64m");//指定切塊大小

 

 

//模擬一個客戶端

FileSystem fs = FileSystem.get(new URI("hdfs://hdp-01:9000/"),conf,"root");

然後可以通過fs.xxxxx的方法來使用

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MySQL的sql_mode合理設置 sql_mode是個很容易被忽視的變數,預設值是空值,在這種設置下是可以允許一些非法操作的,比如允許一些非法數據的插入。在生產環境必須將這個值設置為嚴格模式,所以開發、測試環境的資料庫也必須要設置,這樣在開發測試階段就可以發現問題. sql model 常用來解 ...
  • MySQL必知必會 ​ 瞭解SQL 什麼是資料庫: 資料庫(database)保存有阻止的數據的容器,可以把資料庫想象成一個文件櫃。 什麼是表: 表(table) 某種特定類型結構的結構化清單,資料庫中的表的名字是唯一的。 什麼是列: 列(column)表中的一個欄位。所有表都是有一個或多個列組成的 ...
  • [toc] 背景 測試mysql5.7和mysql8.0 分別在讀寫、只讀、只寫模式下不同併發時的性能(tps,qps) 前提 測試使用版本為mysql5.7.22和mysql8.0.15 sysbench測試前先重啟mysql服務,並清空os的cache(避免多次測試時命中緩存) 每次進行測試都是 ...
  • 首先要在windows下解壓一個windows版本的hadoop 然後在配置他的環境變數,同時要把hadoop的share目錄下的hadoop下的相關jar包拷貝到esclipe 然後Build Path 下麵上代碼 練習:從一個文件裡面不斷地採集日誌上傳到hdfs裡面 1.流程介紹 啟動一個定時任 ...
  • 1、創建資料庫 create database databaseName user databaseName go /* 轉到指定資料庫 */ 2、創建表 create table tableName( /* 欄位名 */ ) 3、插入數據 insert into tableName values( ...
  • USE [TEST]GO/****** Object: UserDefinedFunction [dbo].[RANDTENNUMS] Script Date: 2019/7/23 15:40:16 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ON ...
  • 問題: 正常start-all.sh無法啟動datanode進程,但是./hadoop-daemon.sh start datanode又可以啟動。過一會後datanode進程又莫名消失。 原理: 多次hdfs namenode -format導致namenode生成了新的clusterID, 和d ...
  • 0 "相關源碼" 掌握Flink中三種常用的Time處理方式,掌握Flink中滾動視窗以及滑動視窗的使用,瞭解Flink中的watermark。 Flink 在流處理工程中支持不同的時間概念。 1 處理時間(Processing time) 執行相應運算元操作的機器的系統時間. 當流程式在處理時間運行 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...