《Sqoop 快速上手:安裝 + 測試實戰》

推薦原文 見:http://docs.xupengboo.top/bigdata/di/sqoop.html

Sqoop(SQL-to-Hadoop) 是 Apache 開源的工具,專門用于在 Hadoop 生態系統(如 HDFS、Hive、HBase) 和 關系型數據庫(如 MySQL、Oracle) 之間高效傳輸批量數據。專注于關系型數據庫 ? Hadoop

Apache Sqoop 項目已于 2021 年 6 月停止維護,并被移至 Apache Attic。這意味著官方不再對 Sqoop 進行更新或提供支持。Apache Attic 是 Apache 軟件基金會(ASF)設立的一個存儲庫,專門用于存放那些已停止活躍開發或維護的項目。

官方地址:https://sqoop.apache.org/

下載地址:https://archive.apache.org/dist/sqoop/

一、安裝 Hadoop 客戶端

由于 Sqoop 獨立安裝到一臺服務上面,所以需要在獨立服務器上安裝 Hadoop 的客戶端。

  1. 配置 /etc/hosts 文件。
192.168.10.68 vm-01
192.168.10.69 vm-02
192.168.10.70 vm-03
  1. 下載以及安裝 Hadoop 客戶端。(按照之前 Hadoop 集群安裝 章節部署的集群操作)。
cd /opt
# 選擇合適的hadoop版本,要與Hadoop集群匹配
wget https://downloads.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
# 解壓
tar -xzvf hadoop-3.2.4.tar.gz
# /usr/local通常被用作本地軟件安裝目錄。
mv hadoop-3.2.4 /usr/local/hadoop
  1. 配置相關文件:
  • core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://vm-01:9000</value> <!-- 這里是主節點的 IP 地址, 此處為 vm-01 的 IP 地址 --></property>
</configuration>
  • hdfs-site.xml
<configuration><property><name>dfs.nameservices</name><value>mycluster</value></property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>vm-01:8020</value></property>
</configuration>
  • yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties --><!-- YARN ResourceManager 地址 --><property><name>yarn.resourcemanager.address</name><value>vm-01:8032</value></property>
</configuration>
  • mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value> <!-- 使用 YARN 作為 MapReduce 框架 --></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>
  1. 執行命令校驗:
hadoop fs -ls /  # 應返回遠程 HDFS 根目錄列表# 注意:我們并不是要創建一個hadoop子節點,僅僅是個客戶端,所以不用啟動hadoop的start相關腳本,可通過jps查看。

二、Sqoop 部署

:::tip
注意:選擇 Sqoop 的版本需要與所使用的 Hadoop 版本相匹配,以確保兩者的兼容性和穩定性。不同版本的 Sqoop 依賴于特定版本的 Hadoop,因此在部署時需要注意兩者的對應關系。
:::

此處,已有的 hadoop 3.2.4,這是使用更穩定的版本: Sqoop 1.4.7。

  1. 下載 Sqoop 二進制包
curl -O -L https://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
mv sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz /opt
cd /opt 
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoopvi /etc/profile
export SQOOP_HOME=/opt/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
  1. 配置 Sqoop
# 復制模板配置文件
cp $SQOOP_HOME/conf/sqoop-env-template.sh $SQOOP_HOME/conf/sqoop-env.sh
# 編輯 sqoop-env.sh,設置 Hadoop 路徑
vi sqoop-env.sh
# 配置hadoop公共庫和mapreduce的庫目錄
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
  1. 下載驅動(不同的數據庫,要給Sqoop不同的依賴驅動包)
cd $SQOOP_HOME/lib/
wget https://jdbc.postgresql.org/download/postgresql-42.7.3.jar
  1. 基本導入命令,例如:將 PostgreSQL 表中的數據導入到 HDFS 的指定目錄
# 測試檢查讀取表格數據
sqoop eval \--driver org.postgresql.Driver \--connect jdbc:postgresql://192.168.10.66:5432/postgres \--username "root" \--password "0818" \--query "SELECT * FROM table_name2 LIMIT 1"# 強制指定 HDFS 操作用戶身份
export HADOOP_USER_NAME=hadoopsqoop import \--verbose \--driver org.postgresql.Driver \--connect jdbc:postgresql://192.168.10.66:5432/postgres \--username "root" \--password "0818" \--table "table_name2" \--target-dir /user/sqoop \--delete-target-dir \-m 1

:::tip java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils 異常修復

# 拋出:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils 異常
# 解決辦法:添加 commons-lang-2.6 版本,3版本不支持。
cd $SQOOP_HOME/lib
wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar

:::

成功頁面 如下:

image-20250409135801481

  1. 下載 hadoop 中的文件,查看數據:
# 將導入成功的數據下載下來
$ hdfs dfs -get /user/sqoop /opt/temp/
$ ls
data.csv  sqoop
$ cat part-m-00000 # 數據內容
1,1,1,1,1
1,2,3,4,5
1,1,1,1,1
1,2,3,4,5
1,1,1,1,1
1,2,3,4,5
1,1,1,1,1
1,2,3,4,5

三、Sqoop 整體流程

  1. 生成代碼:Sqoop 根據目標數據庫表的結構,生成相應的 Java 類,用于序列化和反序列化數據。

  2. 編譯和打包:生成的 Java 類會被編譯并打包成一個可執行的 JAR 文件。

  3. 提交作業:Sqoop 將該 JAR 文件作為一個 MapReduce 作業提交給 YARN。

  4. 任務執行:YARN 根據集群的資源情況,分配資源并啟動 MapReduce 作業的各個任務(Mapper)。每個 Mapper 通過 JDBC 從 MySQL 中讀取數據,并將數據寫入 HDFS。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75216.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75216.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75216.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構刷題之貪心算法

貪心算法&#xff08;Greedy Algorithm&#xff09; 是一種在每個步驟中都選擇當前最優解的算法設計策略。它通常用于解決優化問題&#xff0c;例如最小化成本或最大化收益。貪心算法的核心思想是&#xff1a;在每一步選擇中&#xff0c;都做出局部最優的選擇&#xff0c;希望…

重新定義PPT創作!ChatPPT發布全球首個AI PPT專用MCP Server

在這個AI技術日新月異的時代&#xff0c;ChatPPT團隊推出革命性的MCP Server&#xff08;Multimodal Collaboration Platform&#xff09;&#xff0c;這是全球首個專注于AI PPT生成領域的智能協作平臺。該平臺的誕生&#xff0c;標志著PPT創作正式邁入"智能協作"新紀…

未來蓉城:科技與生態共舞的詩意棲居-成都

故事背景 故事發生在中國四川成都的2075年&#xff0c;展現科技與自然深度交融的未來城市圖景。通過六個充滿想象力的生態裝置場景&#xff0c;描繪市民在智慧城市中詩意棲居的生活狀態&#xff0c;展現環境保護與人文傳承的和諧共生。 故事內容 在電子竹林輕軌站&#xff0c;通…

計算機網絡筆記-分組交換網中的時延

一、分組交換網絡中的四種時延類型 1. 排隊時延 在隊列中&#xff0c;當分組在鏈路上等著被傳輸時的時延為排隊時延&#xff0c;一個分組的排隊時延長度取決于該分組前方等待傳輸的分組數量&#xff0c;如果排隊隊列為空&#xff0c;且沒有正在傳輸的分組那么該分組的排隊時延…

ubuntu20.04.6LTS 安裝PCL 1.9.1

在虛擬機中&#xff0c;ubuntu20.04.6 LTS 安裝PCL 1.9.1&#xff0c;實測成功了。 注意&#xff1a; 1、編譯時選擇雙核&#xff0c;否則編譯到一半報錯&#xff0c;因為內存不夠進程被殺死。 虛擬機是4核心、內存8G。可能選3核更快一點&#xff0c;雙核編譯了2個多小時。 …

SQL:JOIN 完全指南:從基礎到實戰應用

JOIN 是 SQL 中最重要也最常用的操作之一&#xff0c;它允許我們從多個表中獲取關聯數據。本文將全面解析 SQL 中的各種 JOIN 類型&#xff0c;包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 以及 CROSS JOIN&#xff0c;并通過實際示例展示它們的應用場景。 一、JOIN 基…

IDEA 2024 Maven 設置為全局本地倉庫,避免新建項目重新配置maven

使用idea創建Java項目時每次都要重新配置Maven&#xff0c;非常麻煩。其實IDEA可以配置全局Maven。方法如下&#xff1a; 1.關閉所有項目進入初始頁面 2.選擇所有配置 3.設置為自己的路徑

UDP怎么樣實現可靠傳輸?

如果需要在基于UDP的應用中實現可靠傳輸&#xff08;例如確保數據不丟失、按順序到達等&#xff09;&#xff0c;通常需要在應用層實現相應的機制。 1. 確認應答機制 應用層可以使用確認應答機制來確保數據的可靠傳輸。當發送方發送一個數據包時&#xff0c;接收方收到數據包…

【CSS基礎】- 02(emmet語法、復合選擇器、顯示模式、背景標簽)

css第二天 一、emmet語法 1、簡介 ? Emmet語法的前身是Zen coding,它使用縮寫,來提高html/css的編寫速度, Vscode內部已經集成該語法。 ? 快速生成HTML結構語法 ? 快速生成CSS樣式語法 2、快速生成HTML結構語法 生成標簽 直接輸入標簽名 按tab鍵即可 比如 div 然后tab…

每日算法:洛谷U535992 J-C 小夢的寶石收集(雙指針、二分)

題目描述 小夢有 n 顆能量寶石&#xff0c;其中第 i 顆的能量為 ai?&#xff0c;但這些能量寶石十分不穩定&#xff0c;隨時有可能發生崩壞&#xff0c;導致他們全部消失&#xff01; 小夢想要留住寶石們&#xff0c;不希望他們發生崩壞&#xff0c;同時他發現&#xff1a;如…

Spring MVC 邏輯視圖(JSP、Thymeleaf、FreeMarker)與非邏輯視圖(JSON、Excel、PDF、XML)詳解及示例

Spring MVC 邏輯視圖與非邏輯視圖詳解及示例 一、邏輯視圖與非邏輯視圖的定義 類型定義邏輯視圖通過視圖解析器&#xff08;ViewResolver&#xff09;將邏輯名稱&#xff08;如 success&#xff09;映射到具體視圖實現。非邏輯視圖直接返回具體視圖對象&#xff08;如 JsonVie…

【AAOS】【源碼分析】CarAudioService(二)-- 功能介紹

汽車音頻是 Android 汽車操作系統 (AAOS) 的一項功能,允許車輛播放信息娛樂聲音,例如媒體、導航和通信。AAOS 不負責具有嚴格可用性和時間要求的鈴聲和警告,因為這些聲音通常由車輛的硬件處理。將汽車音頻服務集成在汽車中,徹底改變了駕駛體驗,為駕駛員和乘客提供了音樂、…

docker安裝軟件匯總(持續更新)

1、簡介 本文介紹一些常用的軟件通過docker安裝并啟動&#xff0c;持續更新。 2、docker安裝軟件 2.1、zookeeper & kafka # 1、拉取zookeeper鏡像 git pull wurstmeister/zookeeper # 2、啟動zookeeper容器 docker run -d --restartalways --log-driver json-file --lo…

MySQL的左連接、右連接、內連接、外連接

一、前言 MySQL中的左連接、右連接、內連接和全外連接是用于多表關聯查詢的核心操作。 二、內連接&#xff08;INNER JOIN&#xff09; 定義&#xff1a;返回兩個表中完全匹配的行&#xff0c;即只保留兩個表連接字段值相等的行。示例場景&#xff1a;查詢所有有選課記錄的學…

前端面試寶典---數據類型

基本數據類型 對于基本類型在創建時無需使用 new 關鍵字 Bigint在實際開發不常用&#xff0c;如果對于精度要求高可以使用第三方庫&#xff0c;如decimal.js 基本數據類型介紹 undefined&#xff1a;當變量被聲明但未賦值&#xff0c;或者函數沒有返回值時&#xff0c;就會呈現…

Lua 函數使用的完整指南

在 Lua 中&#xff0c;函數是一等公民&#xff08;First-Class Citizen&#xff09;&#xff0c;這意味著函數可以像其他值一樣被賦值、傳遞和操作。以下是 Lua 函數定義的完整指南&#xff0c;涵蓋基礎語法、高級特性、設計模式及性能優化。 在Lua 中&#xff0c;函數定義的完…

使用StockTV API對接印度金融市場數據全指南:K線、實時行情與IPO新股

一、印度金融市場數據特點 印度作為全球增長最快的主要經濟體之一&#xff0c;其金融市場具有以下顯著特征&#xff1a; 雙交易所體系&#xff1a;國家證券交易所(NSE)和孟買證券交易所(BSE)高流動性品種&#xff1a;Nifty 50指數成分股、銀行股等獨特交易機制&#xff1a;T2…

2021-10-26 C++繁忙通信兵

緣由繁忙的通訊兵&#xff0c;可以解決一下嗎-編程語言-CSDN問答 void 繁忙通信兵() {//緣由https://ask.csdn.net/questions/7544401?spm1005.2025.3001.5141int a 200, s1 8, s2 5, s3 45, p 0, n 0, c 0;std::cin >> n;while (a > n){a - s1 s2;if (a &l…

【Linux】進程控制:創建、終止、等待與替換全解析

文章目錄 前言一、重談進程創建二、進程終止2.1 正常終止的退出碼機制2.2 異常終止的信號機制2.3 進程常見的退出方法 三、進程等待&#xff1a;避免僵尸進程的關鍵3.1 進程等待的必要性3.2 進程等待的兩個系統調用接口3.2.1 wait()3.2.2 waitpid()區別 四、進程程序替換4.1 進…

基于Redis實現短信防轟炸的Java解決方案

基于Redis實現短信防轟炸的Java解決方案 前言 在當今互聯網應用中&#xff0c;短信驗證碼已成為身份驗證的重要手段。然而&#xff0c;這也帶來了"短信轟炸"的安全風險 - 惡意用戶利用程序自動化發送大量短信請求&#xff0c;導致用戶被騷擾和企業短信成本激增。本…