大資料協作框架——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 andstructured datastores such as relational databases.
sqoop1&sqoop2
- 兩個不同版本,完全不相容
- 版本號劃分方式 :
- 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 --helpbin/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+技術課程免費學!
近年來,新技術發展迅速。網際網路行業持續高速增長,平均薪資水平持續提升,網際網路技
雲端計算、大資料、程式語言學習指南下載,100+技術課程免費學!這份誠意滿滿的新年技術大禮包,你Get了嗎?
開發十年,就只剩下這套架構體系了! >>>
大資料計算框架
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是第一個,在工業