centOS下安裝wget命令html
yum -y install wget wget http://labfile.oss.aliyuncs.com/courses/832/weblog_entries.txt
一、 在 HDFS 中建立一個新文件夾,用於保存 weblog_entries.txt 文件:node
hadoop fs -mkdir -p /data/weblogsmysql
二、 將 weblog_entries.txt 文件從本地文件系統複製到 HDFS 剛建立的新文件夾下:web
hadoop fs -copyFromLocal weblog_entries.txt /data/weblogssql
三、 列出 HDFS 上 weblog_entries.txt 文件的信息:shell
hadoop fs -ls /data/weblogs/weblog_entries.txt數據庫
注意: copyFromLocal和copyToLocal只能複製文件到hdfs(hdfs複製到本地),getmerge則能夠把hdfs中文件夾下全部文件合併成一個,複製到本地環境apache
保證複製源和複製目的地可以互相訪問服務器
關閉複製源集羣 map 任務的推測機制,能夠在配置文件 mapred-site.xml 中將 mapred.map.tasks.speculative.execution 的值設置爲 false 來實現,這樣就能夠避免在 map 任務失敗的時候產生任何不可知的行爲app
兩個集羣之間安裝的 Hadoop 版本必須一致
1.將集羣A的 weblogs 文件夾複製到集羣B上:
hadoop distcp hdfs://namenodeA/data/weblogs hdfs://namenodeB/data/weblogs
2.將集羣A的 weblogs 文件夾複製到集羣B並覆蓋已存在文件:
hadoop distcp –overwrite hdfs://namenodeA/data/weblogs hdfs://namenodeB/ data/weblogs
3.同步集羣A和集羣B之間的 weblogs 文件夾:
hadoop distcp –update hdfs://namenodeA/data/weblogs hdfs://namenodeB/data/ weblogs
在原集羣,文件夾中的內容將被複製爲一個臨時的大文件。將會啓動一個只有map(map-only)的 MapReduce 做業來實現兩個集羣間的數據複製。默認狀況下,每一個 map 就將會分配到一個256 MB 的數據塊文件。舉個例子,若是 weblogs 文件夾總大小爲10 GB,默認將會啓動40個 map,每一個 map 會複製大約256 MB的數據。distcp 複製也能夠經過參數手動設置啓動的 map 數量。
hadoop distcp –m 10 hdfs://namenodeA/data/weblogs hdfs://namenodeB/data/ weblogs 在上面這個例子中,將會啓動10個 map 進行數據複製。若是weblogs文件夾的總大小是10 GB,那麼每一個 map 會複製大約1 GB的數據。 若是要在運行的 Hadoop 版本不同的兩個集羣之間進行數據複製,通常建議在複製源集羣使用 HftpFileSystem。HftpFileSystem 是一個只讀的文件系統。相應的 distcp 命令只能在目標服務器上運行:
hadoop distcp hftp://namenodeA:port/data/weblogs hdfs://namenodeB/data/ weblogs 在上面這條命令中,port的值要與配置文件hdfs-site.xml中dfs.http.address屬性的端口值一致。
準備:
安裝配置Sqoop 與Mysql 驅動
下載並安裝 Sqoop,及配置了環境變量 下載 Mysql 驅動,並 將 MySQL JDBC 驅動包複製到 $SQOOP_HOME/lib 目錄下
注意:sqoop版本是後面帶Hadoop的,否則運行時 會提示找不到Sqoop主類
列出 MySql 中全部數據庫
./sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456
把hive數據庫version表數據導入到 HDFS 中
進入SQOOP_HOME目錄
./bin/sqoop import --connect jdbc:mysql://localhost:3306/hive --username root -P --table version --target-dir /data/weblogs/import --delete-target-dir --class-name version --bindir ./bin
查看hdfs導入的數據
默認狀況下,導入的數據將按主鍵進行分割。若是導入的表並不包含主鍵,必須指定 -m或者--split-by參數決定導入的數據如何分割。在前面的例子中,使用了-m參數。-m參數決定了將會啓動多少個 mapper 來執行數據導入。由於將-m設置爲1,因此就啓動了一個 mapper 用於導入數據。每一個 mapper 將產生一個獨立的文件。
./bin/sqoop export --connect jdbc:mysql://172.18.0.104:3306/irdms_test --username irdms --password irdms --table weblogs_from_hdfs --export-dir '/data/weblogs/weblog_entries.txt' --input-fields-terminated-by '\t' --bindir ./bin/ -m 1
http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_large_objects