flume、azkaban、sqoop小操作

flume 日誌採集工具

agent 任務 source channel sink
netcat 想相當於開啓了socket進行接收
spooldir 檢測文件夾,但是內部不要再有文件夾,而且不要放重名文件,否則處理後發現有重名文件會報錯
exec unix命令的執行結果作爲要接受的數據 例如 tail -F xxx.log
avro 常用於RPC,遠程數據傳輸,在agent串聯中作爲上一個agent下沉地出現

azkaban

azkaban環境配置
azkaban-executor-server-2.5.0.tar.gz 存放了執行器
azkaban-sql-script-2.5.0.tar.gz 存放azkaban運行的需要的sql(sql導入完就沒用了)
azkaban-web-server-2.5.0.tar.gz 存放web服務器

解壓後
azkaban-2.5.0 sql解壓
create-all-sql-2.5.0.sql 完整的sql文件,只執行它就夠了
azkaban-executor-2.5.0 執行器解壓
啓動、關閉執行器
在bin下 azkaban-executor-shutdown.sh azkaban-executor-start.sh
azkaban-web-2.5.0 web解壓後
啓動、關閉web服務器 azkaban-web-shutdown.sh azkaban-web-start.sh schedule2trigger.sh start-web.sh
azkaban.properties 設置時區、設置mysql信息、jetty密碼等同於ssl密鑰
azkaban-users.xml 設置登錄azkaban的用戶及其權限

設置ssl
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

azkaban 工作流調度器
通過command命令來執行
type=command
command=真正要執行的命令
在執行的時候經常要執行多個job,需要有先後順序
dependencies=job的名稱
來指定我當前要執行的job依賴於哪個job,在依賴的這個job執行完再來執行我
除了可以執行linux基礎命令
hdfs的命令也可以執行
可以執行MapReduce
job中設置要執行的MapReduce的命令,命令中用到的要執行的jar包,要和job一起壓縮並上傳
hive命令也能執行
hive -e;
hive -f ‘文件名’;
這時候不光要上傳job本身,還要上傳對應的文件,將job和文件一起壓縮打包上傳

sqoop

從關係型數據庫導入數據到hdfs
因爲未指定到存到hdfs的哪個目錄下,所以默認會存在/user/用戶名/表名 下
./sqoop import --connect jdbc:mysql://192.168.15.134:3306/gmjsqoop --username root --password hadoop --table users --m 1

如果不想使用默認路徑 可以使用自定義路徑
增加配置–target-dir /sqooptable/users(即想要存的路徑)
./sqoop import --connect jdbc:mysql://192.168.15.134:3306/gmjsqoop --username root --password hadoop --target-dir /sqooptable/users --table users --m 1

設置分隔符
./sqoop import --connect jdbc:mysql://192.168.15.134:3306/gmjsqoop --username root --password hadoop --target-dir /sqooptable/users1 --table users --fields-terminated-by ‘\t’ --m 1

設置查詢表中的規定數據
./sqoop import --connect jdbc:mysql://192.168.15.134:3306/gmjsqoop --username root --password hadoop --target-dir /sqooptable/users2 --table users --fields-terminated-by ‘\t’ --m 1 --columns name,pwd

將mysql數據導入hive
./sqoop import --connect jdbc:mysql://192.168.15.134:3306/gmjsqoop --username root --password hadoop --target-dir /sqooptable/users3 --table users --hive-import --m 1
在沒有指定路徑的情況下默認會在default數據庫中存放,表名就是關係型數據庫中的表名

設置將數據導入指定表中並設置表名
./sqoop import --connect jdbc:mysql://192.168.15.134:3306/gmjsqoop --username root --password hadoop --target-dir /sqooptable/users4 --table users --hive-import --m 1 --hive-table gmj.gmjsqoop

如果將關係型數據進行查詢訊之後再導入hdfs
導入數據時追加條件 --where
使用查詢語句 query $CONDITIONS必加
–query ‘select id from user where name = “xxx” and $CONDITIONS’
如果使用了–query要導入的數據就是我們查詢出來的結果集了,就不要設置–table
./sqoop import --connect jdbc:mysql://192.168.15.134:3306/gmjsqoop --username root --password hadoop --target-dir /user/hadoop/users7 --m 1 --query ‘select id,name from users where $CONDITIONS’

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章