1. 程式人生 > >大資料協作框架——sqoop學習權威指南

大資料協作框架——sqoop學習權威指南

大資料協作框架

“大資料協作框架”其實是一個統稱,實際上就是Hadoop 2.x生態系統中幾個輔助Hadoop 2.x框架。在此,主要是以下四個框架:

  • 資料轉換工具Sqoop
  • 檔案收集庫框架Flume
  • 任務排程框架Oozie
  • 大資料WEB工具Hue

選擇CDH5.3.x版本框架

Cloudera公司釋出的CDH 版本,為眾多公司所使用,包括國內的京東、一號店、淘寶、百度等電商網際網路大中小性公司。Cloudera公司釋出的每一個CDH版本,其中一個最大的好處就是,幫我們解決了大資料Hadoop 2.x生態系統中各個框架的版本相容問題,我們直接選擇某一版本,比如CDH5.3.6版本,其中hadoop版本2.5.0,hive版本0.13.1,flume版本1.4.5;還有一點就是類似Sqoop、Flume、Oozie等框架,在編譯的時候都要依賴對應的Hadoop 2.x版本,使用CDH版本的時候,已經給我們編譯好了,無需再重新配置編譯。

在使用sqoop需要先部署CDH版本的hadoop&hive

CDH版本和apache版本的服務不要混用只開啟cdh或者apache服務就可以了
部署方式參考apache版本

Apache Sqoop

Apache Sqoop(TM) is a tool designed for efficientlytransferring bulk data between Apache Hadoop and

structured datastores such as relational databases.


sqoop1&sqoop2

  • 兩個不同版本,完全不相容
  • 版本號劃分方式 :
                Apache:1.4.x~ ,1.99.x~
  • Sqoop2比Sqoop1的改進:

                引入sqoop server,集中化管理Connector等

                多種訪問方式:CLI,Web UI,REST API

                引入基於角色的安全機制

sqoop分為sqoop和sqoop2

sqoop2拆分server和client,有點類似於hiveserver2和beeline

sqoop早起是一些分裝好的MR程式,以jar檔案的形式,最後才演變成框架形式

sqoop底層的執行MR任務,但是sqoop任務只有map任務,沒有reduce任務

用於在hadoop和結構化資料庫(關係型資料庫)之間的高效傳輸批量資料的工具

資料的匯入和匯出

sqoop架構圖



sqoop使用要點


一、sqoop部署

二、sqoop使用

1、檢視幫助資訊

bin/sqoop help


2、測試:sqoop連線mysql

bin/sqoop list-databases --help

bin/sqoop list-databases --connect jdbc:mysql://hadoop01.xningge.com:3306/ --username xningge --password 123456


三、sqoop匯入 import

匯入匯出
**以hdfs為基準
**rdbms  --> hdfs   --> 匯入 -  import

**hdfs   --> rdbms  --> 匯出 -  export

匯入資料HDFS


sqoop import


【mysql -> hdfs】import

在mysql操作
使用資料庫
create database sqoop;
use sqoop;
建立表
create table tohdfs(
id int primary key not null,
name varchar(20) not null
);

insert into tohdfs values(1,'one');
insert into tohdfs values(2,'two');
insert into tohdfs values(3,'three');
insert into tohdfs values(4,'four');
insert into tohdfs values(5,'five');

1、sqoop的常規命令:
檢視import使用引數:bin/sqoop import --help
bin/sqoop import \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--table tohdfs

檢視HDFS的輸出目錄:mapreduce.output.fileoutputformat.outputdir 

hdfs://hadoop01.xningge.com:8020/user/hadoop/tohdfs

2、控制map的任務個數:-m,--num-mappers <n> 
並且輸出路徑如果存在可以使用--delete-target-dir刪除

bin/sqoop import \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--delete-target-dir \
--table tohdfs \
-m 1

3、指定匯入的輸出目錄:--target-dir <dir> 
bin/sqoop import \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--delete-target-dir \
--target-dir /sqoop_test \
--table tohdfs \
-m 1

4、指定資料輸出分隔符(mysql預設的分隔符是 ","  hive預設的分割符是"\001" 也就是^A)
Output line formatting arguments:
--fields-terminated-by <char>

bin/sqoop import \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--delete-target-dir \
--target-dir /sqoop_test \
--table tohdfs \
-m 1 \
--fields-terminated-by "\t"

5、快速模式 --direct

bin/sqoop import \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--direct \
--delete-target-dir \
--target-dir /sqoop_test \
--table tohdfs \
-m 1 \
--fields-terminated-by "\t"

6、增量匯入(從原有的資料上進行追加資料):

官網:

--check-column (col):指定要確定匯入時,行的檢查列,一般都是拿主鍵作為檢測列,注意:char,vachar型別是不可以使用
--incremental (mode):有兩種模式:append 和lastmodified 
append:追加,和lastmodified 時間戳
--last-value (value):指定上次匯入檢查列最後欄位的最大值,也就是最後一個值

append模式:
--check-columnid
--last-value    5

lastmodified 模式:
--check-columntime    time列下面的資料:指的是你新增資料時的最後一個欄位
--last-valuelast-time最後一行的時間戳

append模式增量匯入:

在mysql裡增加資料:

insert into tohdfs values(16,'one');
insert into tohdfs values(17,'two');
insert into tohdfs values(18,'three');
insert into tohdfs values(19,'four');
insert into tohdfs values(20,'five');

匯入:注意下  --delete-target-dir 和 --append不能同時使用

bin/sqoop import \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--direct \
--target-dir /sqoop_test \
--table tohdfs \
-m 1 \
--fields-terminated-by "\t" \
--check-column id \
--incremental append \
--last-value 15 

如果使用lastmodified模式:在mysql建表時,新增關於時間戳的列

--incremental lastmodified
--check-column last_mod
--last-value 2018-01-20 21:29:48.0  
date={date -d 'last day'  +'%Y-%m-%d %H:%M'}

7、sqoop job
bin/sqoop job --create jobID01   建立
bin/sqoop job --show jobID01     顯示job的詳細資訊
bin/sqoop job --list             顯示可用的job
bin/sqoop job --exec     執行job

在mysql中再次插入資料:

insert into tohdfs values(21,'one');
insert into tohdfs values(22,'two');
insert into tohdfs values(23,'three');
insert into tohdfs values(24,'four');
insert into tohdfs values(25,'five');

建立job:
bin/sqoop job \
--create jobID01 \
-- \
import \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--direct \
--target-dir /sqoop_test \
--table tohdfs \
-m 1 \
--fields-terminated-by "\t" \
--check-column id \
--incremental append \
--last-value 20

bin/sqoop job --exec  jobID01 執行job的時候會輸入密碼,一般指定成mysql的登陸密碼

sqoop import hive

【mysql -> hive】import

bin/sqoop import \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--table tohdfs \
--direct \
--delete-target-dir \
--hive-import \
--hive-database student \
--hive-table stu_info \
--fields-terminated-by "\t" \
-m 1 

在hive中操作:
create database student;
建立接收表
create table stu_info(
num int,
name string
)
row format delimited fields terminated by "\t";

機制:執行mr任務時,結果將會儲存在預設的輸出目錄上,將結果集檔案移動到hive對應表的資料夾下

從mysql-> hdfs/hive 應用場景:

主要用來分析mysql儲存歷史資料(公司的業務日誌,系統的資料)

sqoop匯出export

【hdfs -> mysql】
1、常規模式匯入到mysql
bin/sqoop export \
--connect jdbc:mysql://hadoop01.xningge.com:3306/sqoop \
--username xningge \
--password 123456 \
--table tomysql \
--export-dir /sqoop_test \
-m 1 \
--input-fields-terminated-by '\t'

先在mysql中建立表
create table tomysql(
id int primary key not null,
name varchar(20) not null
);

2、使用sqoop執行一個file檔案: --options-file
        類似於hive的-f選項
1)vi  sqoop.file
2)寫命令
寫法:一行key ,一行value
export 
--connect 
jdbc:mysql://hadoop01.xningge.com:3306/sqoop 
--username 
root 
--password 
123456 
--table 
filetomysql 
--export-dir 
/sqoop_test 
-m 
1
--input-fields-terminated-by 
'\t'
3)在mysql中建立表
create table filetomysql(
id int primary key not null,
name varchar(20) not null
);
4)執行檔案:
bin/sqoop --options-file /opt/datas/sqoop.file 
從hive/hdfs -> mysql 應用場景:

主要用來把分析結果進行永久儲存,用於前端展示

相關推薦

資料協作框架——sqoop學習權威指南

大資料協作框架“大資料協作框架”其實是一個統稱,實際上就是Hadoop 2.x生態系統中幾個輔助Hadoop 2.x框架。在此,主要是以下四個框架:資料轉換工具Sqoop檔案收集庫框架Flume任務排程框架Oozie大資料WEB工具Hue選擇CDH5.3.x版本框架Cloud

資料協作框架Sqoop

一、概述:     1、Sqoop:SQL-to-Hadoop     2、連線傳統關係型資料庫和Hadoop的橋樑:      a、把關係型資料庫的資料匯入到Hadoop與其相關的系統中(如Hive,Hbase)

資料協作框架之Oozie

一、配置: 1、下載並解壓: http://archive.cloudera.com/cdh5/cdh/5/oozie-4.1.0-cdh5.14.2.tar.gz tar -zxvf oozie-4.1.0-cdh5.14.2.tar.gz -C /opt/cdh5.14.2/

資料協作框架之Flume

一、概述 Flume是Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。      

資料協作框架之flume詳解

flume的安裝配置     1、下載     2、加壓         $tar zxf /sourcepath/ -C /copypath     3、配置flumu-env.sh檔案         exprt JAVA_HOME=/jdkpath     4、啟動         $bin/flume

資料最經典的學習路線指南(最全知識點總結)

開發十年,就只剩下這套架構體系了! >>>   

資料資料倉庫——hive學習權威指南

學習hive權威指南目錄:ETL介紹大資料平臺架構概述系統資料流動hive概述hive在hadoop生態系統中hive體系結構hive安裝及使用hive客戶端的基本語句hive在HDFS檔案系統中的結構修改hive元資料儲存的資料庫hive操作命令hive常用配置hive常用

學習Hadoop資料基礎框架

什麼是大資料?進入本世紀以來,尤其是2010年之後,隨著網際網路特別是移動網際網路的發展,資料的增長呈爆炸趨勢,已經很難估計全世界的電子裝置中儲存的資料到底有多少,描述資料系統的資料量的計量單位從MB(1MB大約等於一百萬位元組)、GB(1024MB)、TB(1024GB),一直向上攀升,目

Hadoop資料基礎框架學習

什麼是大資料?進入本世紀以來,尤其是2010年之後,隨著網際網路特別是移動網際網路的發展,資料的增長呈爆炸趨勢,已經很難估計全世界的電子裝置中儲存的資料到底有多少,描述資料系統的資料量的計量單位從MB(1MB大約等於一百萬位元組)、GB(1024MB)、TB(1024GB),一直向上攀升,目前,PB

資料-爬蟲框架學習--scrapy

--上面就是scrapy最爽的地方,它同時啟動了7個執行緒同時對七篇文章的完整url進行了爬取,這效率想想也是醉了。最關鍵你無需在程式中去指定這些多執行緒的細節,完全有scrapy框架根據實際業務情況自動排程。{'postdate': [u'2017-04-13 22:13'], 'view': [u'15\

資料技術原理與應用 第二章 資料處理架構Hadoop 學習指南

本指南介紹Linux的選擇方案,並詳細指引讀者根據自己選擇的Linux系統安裝Hadoop。請務必仔細閱讀完廈門大學林子雨編著的《大資料技術原理與應用》第2章節,再結合本指南進行學習。Hadoop是基於Java語言開發的,具有很好跨平臺的特性。Hadoop的所要求系統環境適用於Windows,Linux,Ma

學習hadoop資料基礎框架需要什麼基礎

什麼是大資料?進入本世紀以來,尤其是2010年之後,隨著網際網路特別是移動網際網路的發展,資料的增長呈爆炸趨勢,已經很難估計全世界的電子裝置中儲存的資料到底有多少,描述資料系統的資料量的計量單位從MB(1MB大約等於一百萬位元組)、GB(1024MB)、TB(1024GB),

雲端計算、資料、程式語言學習指南下載,100+技術課程免費學!

近年來,新技術發展迅速。網際網路行業持續高速增長,平均薪資水平持續提升,網際網路技

資料計算框架

https://cloud.tencent.com/developer/article/1030476 1. 前言 計算機的基本工作就是處理資料,包括磁碟檔案中的資料,通過網路傳輸的資料流或資料包,資料庫中的結構化資料等。隨著網際網路、物聯網等技術得到越來越廣泛的應用,資料規模不斷增加,TB

資料到底該怎麼學習

大資料到底怎麼學習呢? 首先我們要學習Java語言和Linux作業系統,這兩個是學習大資料的基礎,學習的順序不分前後。 Java:大家都知道Java的方向有JavaSE、JavaEE、JavaME,學習大資料要學習那個方向呢?只需要學習Java的標準版JavaSE就可以了,像Servlet、

做為一名資料新手,如何成為資料工程師?附上學習路線

這幾年來大資料非常的熱門,到處都有大資料分析的演講。 演講內容通常是宣傳各種大資料分析成功的案例。 但實際上大資料該怎麼做呢? 大部份的討論似乎都僅止於怎麼蒐集大量的資料, 然後用個工具(hadoop/spark)後就會馬上變出商機和錢來。  大資料技術最重要的核心在於如何設計可

資料技術怎麼開始學習,在學習資料之前,需要具備什麼基礎?

未來5年大資料行業呈井噴趨勢,人才需求火爆,2018年大資料人才缺口更是高達900萬。以後想要做大資料相關的工作,需要學習哪些技術知識? 羅馬不是一天建成的,大資料工程師也不是短時間能鍛造的。想要成為大資料開發工程師,也要看你是否骨骼驚奇,天賦過人!在學習大資料之前,你還需要有一定的基礎!

資料是什麼?0基礎資料怎麼進行入門學習

0基礎我們該怎麼進行大資料入門學習呢?帶你們一起來學習。 一、大資料是什麼? 大資料,big data,《大資料》一書對大資料這麼定義,大資料是指不能用隨機分析法(抽樣調查)這樣捷徑,而採用所有資料進行分析處理。 這句話至少傳遞兩種資訊:。 1、大資料是海量的資料 2、大資料處理

最主流的五個資料處理框架的優勢對比

我深入分析了五個大資料處理框架:Hadoop,Spark,Flink,Storm,Samaza Hadoop 頂尖的框架之一,大資料的代名詞。Hadoop,MapReduce,以及其生態系統和相關的技術,比如Pig,Hive,Flume,HDFS等。Hadoop是第一個,在工業