data_analysis's People
data_analysis's Issues
[Hodoop] Home_Work_1
題目:
- 將儲存重要資料的其中一台data node電腦關機
- 10分鐘內,觀看一次檔案狀態並記錄
- 10分鐘後,再次觀看檔案狀態並記錄
- 將關閉的電腦打開,觀看檔案狀態、儲存位置並記錄
關機指令 : docker stop ubuntu_wka01_1
開機指令 : docker start ubuntu_wka01_1
紀錄結果 :
Step 1. block存在 wka02 & wka03
Step 2. 關機
Step 3. 10分鐘內 : block 儲存在原本的 data node (wka02 & wka03) 裡。
- The filesystem under path '/passwd' is HEALTHY
Step 4. 10分鐘後 : block 只顯示儲存在 wka03 (172.19.0.11)
- The filesystem under path '/passwd' is HEALTHY
Step 5. 開機
Step 6. block 只顯示儲存在 wka03 (172.19.0.11)
- The filesystem under path '/passwd' is HEALTHY
- 但是wka02中的檔案依然存在。
外紀
如果關機前,把其中一個 block刪掉,並關掉此主機
那麼開機後, block會被儲存到另一個原本沒有 block的主機。
[Hadoop] Docker基本指令
Docker 基本指令
在Docker啟動一個最小化的ubuntu/ CentOS/ Nginx/ MariaDB 環境 (創造貨櫃主機)
syntax: docker run --rm -it ubuntu
-
--rm
Automatically remove the container when it exits -
-it
Instructs Docker to allocate a pseudo-TTY connected to the container’s stdin
(pseudo-TTY = 虛擬終端機/ TTY = teletypes/ stdin = standard in) -
-d
detached: Run container in background and print container ID
查詢IP location
hostname -i
cat /etc/hosts
docker exec [ID] hostname -i
Run a command in a running container
docker exec -it [container_ID] sh
Stop one or more running containers
syntax: docker stop [container_ID]
List containers
syntax: docker ps -a
-a
Show all containers (default shows just running)
apt-get 指令
apt-get upgrade
apt-get install all
: 安裝全部套件
ifconfig
brctl show
Appendix
[Hadoop] YARN Architecture
[Hadoop] 啟動程序整理
CVN80環境
- 在CVN80環境裡進入 ~/wk/ubuntu 資料夾
cd ubuntu
- 啟動HDFS系統
docker-compose -f hdp311.yml start
- 進入HDFS環境
ssh localhost -p 22100
HDFS環境
- 啟動HDFS java程式
starthdfs
- nna - Name Node, Secondary Name Node
- wka01, 02, 03 - Data Node
- 啟動YARN java程式
startyarn
- [注意] 啟動 YARN 分散運算系統之前, 必須先啟動 HDFS 分散檔案系統
- [重點] YARN 第一次啟動後, 會在 HDFS 分散檔案系統中產生 /tmp/hadoop-yarn
- rma - Resource Manager, Job History Server
- wka01, 02, 03 - Node Manager
[Hadoop] HIVE練習題
-
男性與女性的會員數量與總點播次數,輸出格式如下(res01.tsv)
性別 會員數量 總點播次數
男性
女性 -
會員數量排行顯示前五名的國家,和這些國家的總點播次數,輸出格式如下 (res02.tsv)
國家 會員數量 總點播次數
第一名的國家
.
.
.
第五名的國家 -
哪一天是會員透過我們的音樂網站聆聽音樂最多的一天? (res03.tsv)
-
會員年齡層分布,第一個欄位請依定依照下方樣式輸出,輸出格式如下 (res04.tsv)
會員年齡層 會員數量
0-19
20-39
40-64
65--
/user/bigred/dataset/userdemand.tsv
會員ID 日期 歌手 歌名
user_000010 2008-04-25T15:05:44Z Linkin Park Wake
/user/bigred/dataset/userprofile.tsv
會員ID 性別 年齡 國籍 加入會員月日年
user_000003 m 22 United States Oct 30, 2005
[Hadoop] 共享電腦
查詢本機電腦IP位址
hostname -I
進入他人電腦
ssh [帳號名稱]@[IP位置] -p [port]
ex :
ssh [email protected] - 22100
passwd : dsa101
密碼 : 才不告訴你勒
如果發生Permission Denied
error : Permission denied: user=dsa101, access=WRITE, inode="/user":bigred:bigboss:drwxr-xr-x
解決方式 : 被連線的電腦需要替連線者建立家目錄
在admin下面執行以下程式
-
hdfs dfs -mkdir -p /user/dsa101
-
hdfs dfs -chown dsa101:dsa101 /user/dsa101
- chown : change owner ; 改變檔案擁有者
- syntax : chown [ -R ] [帳號名稱] : [群組名稱] [檔案或目錄]
- 潛規則 : 帳號與群組名稱一樣
-
hdfs dfs -chmod 750 /user/dsa101
- chmod : change mode ; 改變權限
- 750 : 7- owner, 5- dsa101, 0- others
755 = User : r+w+x / Group : r+x / World : r+x
750 = User : r+w+x / Group : r+x / World : --- (i.e. World: no access)
r = read
w = write
x = execute (traverse for directories)
p.s : 有N個連線需求,就要建立N個帳號 & 家目錄
建立新機器 dswka03
- 進入ubuntu 資料夾
- 更改 hdp311.yml 文件內容
nano hdp311.yml
- 安裝機器
docker-compose -f hdp311.yml up -d
- 檢查是否安裝成功
docker-compose -f hdp311.yml ps
建立新帳號
- 建立帳號 :
sudo useradd -m -s /bin/bash [帳號名稱]
- 設定密碼 :
sudo passwd [帳號名稱]
- 永遠記得,帳號是建立在電腦裡面
- 一個帳號永遠只有一個遠端使用者
如何刪除帳號 ????
- 查看帳號是否存在
cat /etc/passwd
- 刪除帳號
sudo userdel -r [帳號名稱]
- 記得要進入擁有帳號的機器裡面,才能查詢及刪除帳號
[Hadoop] 綜合練習
Hadoop 綜合練習
下載資料
wget ["網址"] -O [檔名]
觀看資料
cat
head -n [number] [檔案位置]
tail -n [number [檔案位置]
- number 可以是 " n ", " +n ", " -n "
head -n 3
--> 顯示前三筆tail -n 3
--> 顯示後三筆head -n -3
--> 最後三筆不顯示 ( = 顯示第一筆到倒數第四筆)tail -n +3
--> 顯示最後一筆到第三筆
[Hadoop] HIVE
HIVE 第一課 : 沒有人會在Hive裡面下 INSERT
命令
為什麼呢?
讓我們繼續看下去...
HIVE 語法 = SQL 語法
CREATE TABLE
- 在HIVE裡
CREATE TABLE
,會直接在 HDFS 裡面,建立一個與table名稱一樣的資料夾
INSERT INTO
-
在table 裡面
INSERT INTO
一筆資料這時候有沒有發現 insert 的非常久?
去泡個咖啡再回來,發現終於 insert 完成
讓我們看看 table 資料夾裡面發生了什麼事情吧
-
先輸入
hdfs dfs -ls [資料夾位置]
-
會發現裡面儲存了一個 000000_0 的檔案
-
哦! 所以 table 裡面的每一筆資料,都是同名資料夾裡的一個檔案
剛剛所講的方式,會產生內部資料表(Internal Table)。
有內部就會有外部 (External Table) 。
這兩種資料表的差異等一下會提到。
所以為什麼沒有人會在HIVE裡面下 INSERT
命令 ?
因為每一筆資料都是一個檔案
Insert N 筆資料,就會有 N 個檔案啊!!!
那應該要怎麼建立資料呢?
-
在 HDFS 裡面,
put
檔案到 table 的資料夾裡面 -
hdfs dfs -put [檔案] [table資料夾路徑]
可是這樣好麻煩,要一直在 HIVE 跟 HDFS 之間跳來跳去的
(這樣不是跟方唐鏡一樣討厭了嗎? 我跳進去啦 我又跳出來啦 揍我啊笨蛋!)所以我們可不可以在HDFS下面把資料拿出來,丟進HIVE裡,然後在同時建立 table 呢?
可以的!
就讓我們開始吧
更方便的建立資料 (External Table)
-
在 HDFS 建立一個資料夾
hdfs dfs -mkdir [資料夾名稱]
-
把資料放進建立好的資料夾
hdfs dfs -put [檔案位置] [資料夾名稱]
-
建立一個.hive檔案
nano [name].hive
- 檔案內容 :
CREATE EXTERNAL TABLE zipcode ( cname STRING, dname STRING, zcode STRING )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE LOCATION '/user/dsa101/tw.zipcode';
- Internal Table --> /user/dsa101/hive --> 內部資料表才會產生000000_0檔案
- External Table --> /dataset/ --> 外部資料表的來源是原來的檔案
- 檔案內容 :
-
直接在HDFS裡,執行.hive檔
hive -S -f [.hive檔名稱]
-f
: SQL from files
-
查看
hive -S -e "show tables"
-e
: SQL from command line
[Hadoop] Hadoop叢集系統
製作Docker Image
建立
docker-compose -f hdp311.yml up -d
檢視
docker-compse -f hdp311.yml ps
啟動
docker-compose -f hdp311.yml start
關機
docker-compose -f hdp311.yml stop
移除
docker-compose -f hdp311.yml down
[加映場] Hadoop vs Spark
如果Spark要離開Hadoop,Spark的系統要改成
- HDFS --> Amazon S3
- YARN --> Standalone
- MapReduce --> RDD (Resilient Distributed Datasets)
[Hadoop] Hadoop Architecture
Hadoop 基礎架構
Hadoop包含了四大基本模組:
- Hadoop Common: The common utilities that support the other Hadoop modules.
- Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
- Hadoop YARN: A framework for job scheduling and cluster resource management.
- Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
- Others: Spark RDD
MapReducer Programming Model
MapReducer可使用多種程式語言,但Java最快速。
-
內部邏輯
HDFS (Input) --> Splitting --> Mapping -->透過網路 --> Shuffling --> Reducing --> HDFS (Final Result)
MapReducer分成Map與Reduce,中間必須透過網路傳輸。
Shuffling: 負責資料彙整; 由YARN的Node Manager執行。 -
Mapreducer 與 Spark RDD 比較
MapReducer --> Disk Killer
Spark RDD --> Memory Killer
[Hadoop] 下載資料&資料分析
下載資料
wget
檢視資料
- 查看前N筆資料
head -n N [file_name]
- 查看後N筆資料
tail -n N [file_name]
- 尋找含關鍵字的資料
`grep ["key_word"] [file_name]
啟動pig
pig
建立資料夾
mkdir [資料夾名稱]
將檔案放到pig裡面
copyfromlocal [檔案名稱] [資料夾名稱]
--這個指令等同於 --> hdfs dfs -put [檔案名稱] [資料夾位置]
載入 & 分析檔案
- 用變數載入檔案
[代號_載入檔案名稱] = LOAD ["檔案位置"] USING PigStorage(',');
- 篩選
[代號_篩選資料] = FILTER [檔案名稱] BY (float)$[欄位]>[條件];
- 撰寫 -> 編譯 -> 執行 -> 顯示
dump [代號_篩選資料];
- ex :
grunt> movies = LOAD '/dataset/movies_data.csv' USING PigStorage(',');
grunt> a = FILTER movies BY (float)$3>2.0;
grunt> dump a;
篩選指令整理
FILTER
[代號] = FILTER [代號] BY ([表達式]) and ([表達式]) ;
GROUP
[代號] = GROUP [代號] BY [欄位];
- 一定會產生新的dataset
ORDER
[代號] = ORDER [代號] BY [欄位] [ASC|DESC];
只取得前N筆資料
limit [代號_檔案] [筆數];
FOREACH
[代號] = FOREACH [代號] GENERATE [欄位], [欄位], [欄位], ...;
在pig環境外編輯及執行pig指令
- 建立文件
nano [pig檔案名稱]
- 編輯檔案
- 執行
pig [檔案名稱]
- 如果只想看到結果,不想看到錯誤指令
pig [檔案名稱] 2>/dev/null
(2>/dev/null
可以把垃圾訊息丟進黑洞 )
為什麼執行速度很慢???
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.