1.PS:Hive中好少有update這個方法,由於他主要是用來批量數據的處理分析。php
2.PS:軟鏈接和硬鏈接的區別java
軟鏈接就是咱們普通和Windows系統同樣的快捷方式,她也是一個文件node
硬鏈接就是他是一個inode,對文件會有引用,刪除這個快捷方式不會刪除文件。mysql
3.pig其實和hive同樣,只不過hive有本身的語法,pig還要專門學習他的東西,通用性不太強。web
--------------------------------------------------------------------------------------------------------sql
PS:這是過幾天要寫的一個項目:數據庫
首先對日誌文件進行收集,使用flume,第二部進行數據清理;傳入hive庫;進入mysql,最好進行數據展現apache
---------------------------------------------------------------------------------------------------瀏覽器
一、 Flume分佈式系統中最核心的角色是agent,flume採集系統就是由一個個agent所鏈接起來造成服務器
二、 每個agent至關於一個數據傳遞員,內部有三個組件:
a) Source:採集源,用於跟數據源對接,以獲取數據
b) Sink:下沉地,採集數據的傳送目的,用於往下一級agent傳遞數據或者往最終存儲系統傳遞數據
c) Channel:angent內部的數據傳輸通道,用於從source將數據傳遞到sink
PS:一個agent就是一個進程
-----------------------------------
一、Flume的安裝很是簡單,只須要解壓便可,固然,前提是已有hadoop環境
上傳安裝包到數據源所在節點上
而後解壓 tar -zxvf apache-flume-1.6.0-bin.tar.gz
而後進入flume的目錄,修改conf下的flume-env.sh,在裏面配置JAVA_HOME
2、根據數據採集的需求配置採集方案,描述在配置文件中(文件名可任意自定義)
3、指定採集方案配置文件,在相應的節點上啓動flume agent
---------Step-演示將採集到數據顯示到控制檯上
1.解壓文件到apps中
2.到conf文件下,建立配置測試文件,不一樣的文件不同
2 、 啓動agent去採集數據
bin/flume-ng agent -c conf -f conf/netcat-logger.conf -n a1 -Dflume.root.logger=INFO,console |
-c conf 指定flume自身的配置文件所在目錄
-f conf/netcat-logger.con 指定咱們所描述的採集方案
-n a1 指定咱們這個agent的名字
TelNet就行輸入,測試;這裏數據和顯示不在一塊兒,現實生活中不會是這樣的
-------------------------監視文件夾方法
1.先建立一個文件夾
2.在conf中建立文件
# Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source #監聽目錄,spoolDir指定目錄, fileHeader要不要給文件夾前墜名 a1.sources.r1.type = spooldir a1.sources.r1.spoolDir = /home/hadoop/flumespool a1.sources.r1.fileHeader = true # Describe the sink a1.sinks.k1.type = logger # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
3.監視文件夾
啓動命令:
bin/flume-ng agent -c ./conf -f ./conf/spool-logger.conf -n a1 -Dflume.root.logger=INFO,console
---------------------------------------------------------------
測試:
1.往/home/hadoop/flumeSpool放文件(mv ././xxxFile /home/hadoop/flumeSpool),可是不要在裏面生成文件
2. 移入文件之後,根據移入的文件 響應的文件中的內容
PS:將數據移入後會自動變爲completed,會監視文件夾的數據。最好是將生成的數據放入文件夾,文件夾的名字不能重名
------------------------------------------多級Agent串聯
PS:具體的操做我沒有去實現,主要就是
1.將bee1的flume配置發給bee2,分別配置 相印的配置文件,
2.不停的在配置文件中指定的位置打印 數據
3.而後在bee2中出結果
市面上目前有許多工做流調度器
在hadoop領域,常見的工做流調度器有Oozie, Azkaban,Cascading,Hamake等
-----------------------------------------------Azkaban 配置步驟
1.建立一個azkaban的文件夾,解壓文件
2.azkaban腳本導入
將解壓後的mysql 腳本,導入到mysql中:
進入mysql
mysql> create database azkaban;
mysql> use azkaban;
Database changed
mysql> source /home/hadoop/azkaban-2.5.0/create-all-sql-2.5.0.sql;
3.建立SSL配置(由於傳輸協議使用的是https,因此須要這一步操做)
參考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
運行此命令後,會提示輸入當前生成 keystor的密碼及相應信息,輸入的密碼請勞記,信息以下:
輸入keystore密碼:
再次輸入新密碼:
您的名字與姓氏是什麼?
[Unknown]:
您的組織單位名稱是什麼?
[Unknown]:
您的組織名稱是什麼?
[Unknown]:
您所在的城市或區域名稱是什麼?
[Unknown]:
您所在的州或省份名稱是什麼?
[Unknown]:
該單位的兩字母國家代碼是什麼
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正確嗎?
[否]: y
輸入<jetty>的主密碼
(若是和 keystore 密碼相同,按回車):
再次輸入新密碼:
完成上述工做後,將在當前目錄生成 keystore 證書文件,將keystore 考貝到 azkaban web服務器根目錄中.如:cp keystore azkaban/server
4. 配置文件--------------------統一時間
注:先配置好服務器節點上的時區
一、先生成時區配置文件Asia/Shanghai,用交互式命令 tzselect 便可
二、拷貝該時區文件,覆蓋系統本地時區配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
而後對全部的機器執行該操做
3.修改配置文件,下面是配置郵件地址,複製收發郵件。暫時先不配
--------------------------------------------------------------------
PS:這裏是修改Server的配置
PS:web服務器的配置
PS:修改excutor
在azkaban web服務器目錄下執行啓動命令
bin/azkaban-web-start.sh
注:在web服務器根目錄運行
或者啓動到後臺
nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &
在執行服務器目錄下執行啓動命令
bin/azkaban-executor-start.sh
注:只能要執行服務器根目錄運行
啓動完成後,在瀏覽器(建議使用谷歌瀏覽器)中輸入https://服務器IP地址:8443 ,便可訪問azkaban服務了.在登陸中輸入剛纔新的戶用名及密碼(admin),點擊 login.
--------------------------------------------------------------------------------------------------------------------------------
PS:由於Azkaba最好執行command命令,由於jar包不太經常使用
Azkaba內置的任務類型支持command、java
一、建立job描述文件
vi command.job
#command.job type=command command=echo 'hello' |
二、將job資源文件打包成zip文件
zip command.job
三、經過azkaban的web管理平臺建立project並上傳job壓縮包
首先建立project
上傳zip包
4、啓動執行該job
PS:在執行命令以前,也有調度執行,仍是當即執行。爲了測試,咱們選擇當即執行。
PS:後面還有一些例子,沒有作。
PS:若是提交文件之後,執行的什麼都是正確的,就是 運行錯誤,可能文件格式沒有保存成UTF-8
----------------------------------------------------------------------------------------------------------------------------------------------------
sqoop是apache旗下一款「Hadoop和關係數據庫服務器之間傳送數據」的工具。
導入數據:MySQL,Oracle導入數據到Hadoop的HDFS、HIVE、HBASE等數據存儲系統;
導出數據:從Hadoop的文件系統中導出數據到關係數據庫
3.2 工做機制
將導入或導出命令翻譯成mapreduce程序來實現
在翻譯出的mapreduce中主要是對inputformat和outputformat進行定製
3.3 sqoop實戰及原理
安裝sqoop的前提是已經具有java和hadoop的環境
PS: 解壓並修改文件夾名
PS:到sqoop文件夾下修改 配置文件的名字
PS:編輯sqoop-env.sh
PS:從hive中拷貝文件,而後啓動
PS:導入數據,從mysql導入hdfs;
------------------------------------本身修改查找數據庫進行sqoop
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/azkaban \
--username root \
--password root \
--table project_files \
--m 1
---------------------
PS:若是沒有指定數據的位置,那麼導入的數據就放在其就默認放在HADOOP_HOME/bin/hadoop (導入:從mysql到hdfs)
爲了驗證在HDFS導入的數據,請使用如下命令查看導入的數據
$ HADOOP_HOME/bin/hadoop fs -cat /user/hadoop/emp/part-m-00000 |
-------------------------------------------
將數據從HDFS導出到RDBMS數據庫
導出前,目標表必須存在於目標數據庫中。
u 默認操做是從將文件中的數據使用INSERT語句插入到表中
u 更新模式下,是生成UPDATE語句更新表數據
如下是export命令語法。
$ sqoop export (generic-args) (export-args) |
數據是在HDFS 中「EMP/」目錄的emp_data文件中。所述emp_data以下:
1201, gopal, manager, 50000, TP 1202, manisha, preader, 50000, TP 1203, kalil, php dev, 30000, AC 1204, prasanth, php dev, 30000, AC 1205, kranthi, admin, 20000, TP 1206, satish p, grp des, 20000, GR |
1、首先須要手動建立mysql中的目標表
$ mysql mysql> USE db; mysql> CREATE TABLE employee ( id INT NOT NULL PRIMARY KEY, name VARCHAR(20), deg VARCHAR(20), salary INT, dept VARCHAR(10)); |
2、而後執行導出命令
bin/sqoop export \ --connect jdbc:mysql://hdp-node-01:3306/test \ --username root \ --password root \ --table employee \ --export-dir /user/hadoop/emp/ |
3、驗證表mysql命令行。
mysql>select * from employee; 若是給定的數據存儲成功,那麼能夠找到數據在以下的employee表。 +------+--------------+-------------+-------------------+--------+ | Id | Name | Designation | Salary | Dept | +------+--------------+-------------+-------------------+--------+ | 1201 | gopal | manager | 50000 | TP | | 1202 | manisha | preader | 50000 | TP | | 1203 | kalil | php dev | 30000 | AC | | 1204 | prasanth | php dev | 30000 | AC | | 1205 | kranthi | admin | 20000 | TP | | 1206 | satish p | grp des | 20000 | GR | +------+--------------+-------------+-------------------+--------+ |