天天看點

資料到hadoop的遷移

最近在用flume和sqoop來做非關系資料(日志)和關系資料(MYSQL)遷移到hdfs的工作,簡單記錄下使用過程,以此總結

一 flume的使用

使用flume把web的log日志資料導入到hdfs上

步驟

1 在 elephant 節點上

先安裝flume sudo yum install --assumeyes flume-ng

2 建立配置檔案

vi /etc/hadoop/conf/flume-conf.properties

tail1.sources = src1

tail1.channels = ch1

tail1.sinks = sink1

tail1.sources.src1.type = exec

tail1.sources.src1.command = tail -F /tmp/access_log

tail1.sources.src1.channels = ch1

tail1.channels.ch1.type = memory

tail1.channels.ch1.capacity = 500

tail1.sinks.sink1.type = avro

tail1.sinks.sink1.hostname = localhost

tail1.sinks.sink1.port = 6000

tail1.sinks.sink1.batch-size = 1

tail1.sinks.sink1.channel = ch1

##

collector1.sources = src1

collector1.channels = ch1

collector1.sinks = sink1

collector1.sources.src1.type = avro

collector1.sources.src1.bind = localhost

collector1.sources.src1.port = 6000

collector1.sources.src1.channels = ch1

collector1.channels.ch1.type = memory

collector1.channels.ch1.capacity = 500

collector1.sinks.sink1.type = hdfs

collector1.sinks.sink1.hdfs.path = flume/collector1

collector1.sinks.sink1.hdfs.filePrefix = access_log

collector1.sinks.sink1.channel = ch1

配置檔案說明結構是

src取日志資料,通過記憶體傳送到本地以avro檔案格式儲存,做中轉,然後從avro檔案,通過記憶體傳送到hdfs上。hdfs儲存路徑是flume/collector1,

3 在hfds上建立儲存目錄

hadoop fs -mkdir -p flume/collector1

4 模拟産生大量日志檔案,在log目錄中

$ accesslog-gen.bash /tmp/access_log

5 啟動日志收集器

flume-ng agent --conf /etc/hadoop/conf/ \

--conf-file /etc/hadoop/conf/flume-conf.properties \

--name collector1

6 啟動日志采集器

$ flume-ng agent \

--name tail1

二 sqoop的使用

使用sqoop把mysql中的表資料導入到hdfs

1安裝sqoop

sudo yum install --assumeyes sqoop

2在sqoop的lib下建立一個mysql連接配接的驅動連結,也就是在sqoop的lib下面能找到mysql的驅動包

就是在/usr/lib/sqoop/lib目錄,建立 $ sudo ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/sqoop/lib/

3導入資料

sqoop help

用sqoop檢視mysql中有哪些資料庫

sqoop list-databases \

--connect jdbc:mysql://localhost \

--username training --password training

再看看庫裡有哪些表

sqoop list-tables \

--connect jdbc:mysql://localhost/movielens \

開始導入指令表movie到hdfs,表中字段的資料用tab分割

sqoop import \

--table movie --fields-terminated-by '\t' \

4驗證

hadoop fs -ls movie

hadoop fs -tail movie/part-m-00000

可以看到資料已檔案形式儲存到hdfs