本文目錄一覽:
- 1、Hadoop和Mysql聯合查詢
- 2、mysql中數據怎麼導入hadoop
- 3、hadoop和mysql的結合作用方案
- 4、hadoop可以用mysql作為資料庫嗎
- 5、怎麼將mysql數據導入hadoop
- 6、如何將mysql數據導入hadoop
Hadoop和Mysql聯合查詢
你可以先用hive或者手寫map/reduce程序。建議你直接使用hive,hive也像mysql一樣可以建表。表裡的數據就是對應從本地load到hadoop上的文件,格式自己定。然後用JDBC可以像操作mysql一樣操作hive(sql語法稍有不同),把分析出來的數據再insert到mysql中去
mysql中數據怎麼導入hadoop
通過Map/Reduce進行批處理遞送到Apache
Hadoop仍然是中樞環節。,但隨著要從「超思維速度「分析方面獲取競爭優勢的壓力遞增,因此Hadoop(分散式文件系統)自身經歷重大的發展。科技的發展允許實時查詢,如Apache
Drill,Cloudera
Impala和Stinger
Initiative正脫穎而出,新一代的資源管理Apache
YARN
支持這些。
為了支持這種日漸強調實時性操作,發布一個新MySQL
Applier
for
Hadoop(用於Hadoop的MySQL
Applier)組件。它能夠把MySQL中變化的事務複製到Hadoop
/
Hive
/
HDFS。Applier
組件補充現有基於批處理Apache
Sqoop的連接性。
這個組件(MySQL
Applier
for
Hadoop)的複製是通過連接MySQL主服務,一旦二進位日誌被提交,就讀取二進位日誌事務,並且把它們寫到HDFS.
這個組件使用libhdfs提供的API,一個C庫操作HDFS中的文件。這庫由Hadoop版本預編譯生成的。
它連接MySQL主服務讀二進位日誌,然後提取發生在主服務上的行插入事件,解碼事件,提取插入到行的每個欄位的數據,並使用滿意的處理程序得到被要求的格式數據。把它追加到HDFS
中一個文本文件。
資料庫被映射為單獨的目錄,它們的表映射為子目錄,保存在數據倉庫目錄。每個表的數據被寫到Hive/
HDFS中文本文件(稱為datafile1.txt)。數據可以用逗號格式分隔;或其他格式,那可用命令行參數來配置的。
hadoop和mysql的結合作用方案
首先你的源數據是想存在mysql里,還是存到hadoop 里。
有一些方案是把最原始的數據,存入hadoop中。定期做清洗和分析,把處理好的數據放到mysql庫里,供web應用讀取,展示到頁面上。
hadoop可以用mysql作為資料庫嗎
hadoop一般是應用於冷數據處理,對於實時數據,如果非要使用,可以變著方法使用。
方法一:在hadoop上使用hbase資料庫,以為hbase是不走Map/Reduce的,所以操作在毫秒級。
方法二:將業務數據用程序分成實時數據和冷數據,實時數據存於關係資料庫,冷數據存到hadoop。比如:將最近一個月的數據存到關係資料庫,用做實時響應業務處理。將一個月以前的數據存到hadoop,用作歷史數據查詢以及統計分析,數據挖掘等。
怎麼將mysql數據導入hadoop
通過Map/Reduce進行批處理遞送到Apache
Hadoop仍然是中樞環節。,但隨著要從「超思維速度「分析方面獲取競爭優勢的壓力遞增,因此Hadoop(分散式文件系統)自身經歷重大的發展。科技的發展允許實時查詢,如Apache
Drill,Cloudera
Impala和Stinger
Initiative正脫穎而出,新一代的資源管理Apache
YARN
支持這些。
為了支持這種日漸強調實時性操作,發布一個新MySQL
Applier
for
Hadoop(用於Hadoop的MySQL
Applier)組件。它能夠把MySQL中變化的事務複製到Hadoop
/
Hive
/
HDFS。Applier
組件補充現有基於批處理Apache
Sqoop的連接性。
這個組件(MySQL
Applier
for
Hadoop)的複製是通過連接MySQL主服務,一旦二進位日誌被提交,就讀取二進位日誌事務,並且把它們寫到HDFS.
這個組件使用libhdfs提供的API,一個C庫操作HDFS中的文件。這庫由Hadoop版本預編譯生成的。
它連接MySQL主服務讀二進位日誌,然後提取發生在主服務上的行插入事件,解碼事件,提取插入到行的每個欄位的數據,並使用滿意的處理程序得到被要求的格式數據。把它追加到HDFS
中一個文本文件。
資料庫被映射為單獨的目錄,它們的表映射為子目錄,保存在數據倉庫目錄。每個表的數據被寫到Hive/
HDFS中文本文件(稱為datafile1.txt)。數據可以用逗號格式分隔;或其他格式,那可用命令行參數來配置的。
如何將mysql數據導入hadoop
完成sqoop的安裝後,可以這樣測試是否可以連接到mysql(注意:mysql的jar包要放到 SQOOP_HOME/lib 下):
sqoop list-databases –connect jdbc:mysql://192.168.1.109:3306/ –username root –password 19891231
結果如下
即說明sqoop已經可以正常使用了。
下面,要將mysql中的數據導入到hadoop中。
我準備的是一個300萬條數據的身份證數據表:
先啟動hive(使用命令行:hive 即可啟動)
然後使用sqoop導入數據到hive:
sqoop import –connect jdbc:mysql://192.168.1.109:3306/hadoop –username root –password 19891231 –table test_sfz –hive-import
sqoop 會啟動job來完成導入工作。
完成導入用了2分20秒,還是不錯的。
在hive中可以看到剛剛導入的數據表:
我們來一句sql測試一下數據:
select * from test_sfz where id 10;
可以看到,hive完成這個任務用了將近25秒,確實是挺慢的(在mysql中幾乎是不費時間),但是要考慮到hive是創建了job在hadoop中跑,時間當然多。
接下來,我們會對這些數據進行複雜查詢的測試:
我機子的配置如下:
hadoop 是運行在虛擬機上的偽分散式,虛擬機OS是ubuntu12.04 64位,配置如下:
TEST 1 計算平均年齡
測試數據:300.8 W
1. 計算廣東的平均年齡
mysql:select (sum(year(NOW()) – SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz where address like ‘廣東%’;
用時: 0.877s
hive:select (sum(year(‘2014-10-01’) – SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz where address like ‘廣東%’;
用時:25.012s
2. 對每個城市的的平均年齡進行從高到低的排序
mysql:select
address, (sum(year(NOW()) – SUBSTRING(borth,1,4))/count(*)) as ageAvge
from test_sfz GROUP BY address order by ageAvge desc;
用時:2.949s
hive:select
address, (sum(year(‘2014-10-01’) – SUBSTRING(borth,1,4))/count(*)) as
ageAvge from test_sfz GROUP BY address order by ageAvge desc;
用時:51.29s
可以看到,在耗時上面,hive的增長速度較mysql慢。
TEST 2
測試數據:1200W
mysql 引擎: MyISAM(為了加快查詢速度)
導入到hive:
1. 計算廣東的平均年齡
mysql:select (sum(year(NOW()) – SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like ‘廣東%’;
用時: 5.642s
hive:select (sum(year(‘2014-10-01’) – SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like ‘廣東%’;
用時:168.259s
2. 對每個城市的的平均年齡進行從高到低的排序
mysql:select
address, (sum(year(NOW()) – SUBSTRING(borth,1,4))/count(*)) as ageAvge
from test_sfz2 GROUP BY address order by ageAvge desc;
用時:11.964s
hive:select
address, (sum(year(‘2014-10-01’) – SUBSTRING(borth,1,4))/count(*)) as
ageAvge from test_sfz2 GROUP BY address order by ageAvge desc;
用時:311.714s
原創文章,作者:BALUE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330784.html