實操_大數據學習_v0.0.2.持續更新。。。


文件名稱 版本號 作者 qq 備註
實操_大數據學習_v0.0.2_持續更新。。。 v0.0.2 飛豺 8416837 Hadoop2.7.7 | Ubuntu18

概念

  • 分佈式文件系統
    當數據容量超過所存儲在單個物理機上的存儲,多個物理機共同完成該數據存儲,管理這些跨機器的存儲操作就被稱爲分佈式文件系統。
    文件系統管理的資源不一定直接相連本地,而是通過網絡節點連接;基於C/S模式,由於對等特性,客戶機也可以發佈目錄作爲服務器供其它客戶機訪問,就像訪問本地驅動器一樣。
  • Hadoop
    將文件存儲於普通計算機組成的集羣,這樣可以使用廉價計算機構建大規模數據集存儲系統。它是分佈式存儲的基礎設施。
  • DataNode與服務器節點
    在數目上,副本與DataNode一對一。
  • Spark
    基於分佈式存儲進行數據處理,不會存儲。理論上,Hadoop可以拋開Spark,使用MapReduce進行數據處理。但一般來說,Spark速度快過MapReduce,它的處理方式是分步的:從集羣取出數據處理後,放回集羣,再取出更新後的數據,進行處理。
  • HBase-大表
  • 列族
    Apache HBase 中的列被分組爲列族。列族的所有列成員具有相同的前綴。例如,courses:historycourses:math 都是 courses 列族的成員。冒號字符(:)從列族限定符中分隔列族。列族前綴必須由可打印字符組成。限定尾部,列族限定符可以由任意字節組成。必須在 schema 定義時提前聲明列族,而列不需要在 schema 時定義,但可以在表啓動並運行時動態地變爲列。
    在物理上,所有列族成員一起存儲在文件系統上。由於調音(tunings)和存儲(storage)規範是在列族級完成的,因此建議所有列族成員具有相同的一般訪問模式和大小特徵.

HDFS實操

Ubuntu OS環境下的操作 - 其他Linux類似

新建用戶組

  • 新增Hadoop用戶 - 也可以直接用管理員
sudo addgroup hadoop_
sudo adduser --ingroup hadoop_ hduser_ # ↓圖

在這裏插入圖片描述

安裝SSH服務

執行命令:ssh localhost進行登錄測試,若報錯,先安裝SSH相關,方能便捷使用

sudo apt-get install ssh
sudo apt-get install rsync

免密登陸設置

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
# 可能以上命令沒起效 , 仍然需要輸入PW,Ubuntu OS ↓
cat /home/hduser_/.ssd/id_rsa.pub >> /home/hduser_/.ssh/authorized_keys # 可能報錯:沒有.ssd目錄
# Ubuntu系統下,免密若不起效,並不影響後續操作

*
執行腳本時,免密

sudo visudo
# 在%sudo ALL=(ALL:ALL) ALL下面添加一行
username ALL=(ALL) NOPASSWD: ALL

下載安裝

在官網下載Hadoop https://hadoop.apache.org/releases.html
下載binary版,如hadoop-2.7.7.tar.gz

# 或者wget獲取
wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

在這裏插入圖片描述

# 解壓
sudo tar xvzf hadoop-xxx.jar -C 目標目錄 # sudo tar xvzf hadoop-2.7.7.tar.gz -C /home/app/

配置 - update下述文件

  • 單節點
    它們在${HADOOP_HOME}/etc/hadoop/目錄,${HADOOP_HOME}==Hadoop安裝的根目錄
  • core-site.xml
<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/app/hadooptmp</value>
		<description>Parent dir for other temp dir</description>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:54310</value>
		<description>The name of the default file system.</description>
	</property>
</configuration>
  • hdfs-site.xml
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
		<description>Default block replication.</description>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/home/app/hdfsdata</value>
	</property>
</configuration>
  • mapred-site.xml.template
<configuration>
	<property>
		<name>mapreduce.jobtracker.address</name>
		<value>localhost:54311</value>
		<description>MapReduce job tracker runs at this host and port.</description>
	</property>
</configuration>
  • hadoop-env.sh
# export JAVA_HOME=${JAVA_HOME} # 註釋這行,改爲↓
export JAVA_HOME=/data/app/jdk1.8.0_201 # 你自己的JAVA_HOME

啓動

  • 單節點
# 手動創建目錄並授權
sudo mkdir -p /home/app/hadooptmp
sudo chown -R abuntucc /home/app/hadooptmp
sudo mkdir -p /home/app/hdfsdata
sudo chown -R abuntucc /home/app/hdfsdata
# 格式化 namenode
cd ${HADOOP_HOME} # 你的Hadoop根目錄,因機而異。亦可把啓動命令配置到環境變量而簡化啓動腳本
bin/hadoop namenode -format
sbin/start-all.sh
# 如果啓動不完全,需要授權目錄,找到Hadoop相關目錄進行授權
sudo chown -R hduser_:hadoop_ ${HADOOP_HOME} # 將權限賦予該用戶-hduser_ chown的意思:變更文件所有者
# 如果報錯目錄不存在,請sudo mkdir -p 目錄 來創建目錄

啓動成功 exec jps 會看到5個Hadoop進程。五個。
在這裏插入圖片描述

  • Web頁面的訪問地址

hadoop admin http://localhost:8088/cluster
namenode http://localhost:50070
hdfs namenode http://localhost:8042
hdfs hdfs://localhost:54310 - The name of the default file system.
請訪問上述地址試試,跨機訪問請開放端口

  • 配置環境變量
sudo vim /etc/profile
export HADOOP_HOME=/home/project/hadoop/hadoop-2.7.7
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
source /etc/profile

這樣就可以直接使用hadoop命令了.
在這裏插入圖片描述

  • 簡單命令
命令 意義 備註
hadoop dfs -ls -R / 遞歸查看根目錄下的目錄,以及子目錄 http://domain:50070也可以瀏覽目錄

MapReduce實操

  • 先看個直觀圖,它具象了MR的操作
    在這裏插入圖片描述
實例1 - 過濾關鍵詞 - 獲取文中的關鍵詞
  • 步驟 - 閱讀註釋
# 新建用戶目錄
hadoop dfs -mkdir -p /user/hduser_/input007
# 進入Hadoop根目錄
cd ${HADOOP_HOME}
# 將一些xml文件放入input007目錄
hadoop dfs -put etc/hadoop/*.xml /user/hduser_/input007 # 如果當前用戶名稱是hduser_,則目錄可以省略/user/hduser_
# 執行mp,獲取文件中正則dfs[a-z.]+匹配的關鍵詞
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep /user/hduser_/input007 /user/hduser_/output007 'dfs[a-z.]+' # output007目錄自動創建
# 執行完畢,看下剛纔的成果,從output007裏取結果,output007對應上面的output007
hadoop dfs -cat /user/hduser_/output007/*

把xml文件放入了HDFS目錄後的效果↓
在這裏插入圖片描述

  • 成功,結果見下圖
    在這裏插入圖片描述
  • 覈實. xml文件裏確有這幾個關鍵詞↓
    在這裏插入圖片描述

實際應用場景:過濾敏感詞彙 | 查詢等

實例2 - 關鍵詞統計

新建words.txt文件,內容如下

在這裏插入圖片描述

# 將文件放入input007目錄
hadoop dfs -put /home/project/files/words.txt /user/hduser_/input007
# 進入根目錄
cd ${HADOOP_HOME}
# 執行mp,開始統計
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/hduser_/input007/words.txt /user/hduser_/output010
# 查看
hadoop dfs -ls /user/hduser_/output010
# 查看統計結果
hadoop dfs -cat /user/hduser_/output010/part-r-00000

統計成功
在這裏插入圖片描述
在這裏插入圖片描述
實際應用場景: 微博|評論|搜索詞頻統計等

實例3 - π值計算

shell

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 100 100

在這裏插入圖片描述
增加投擲次數↓,更精確了。

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 100 150

在這裏插入圖片描述
↑基於極限求π值,第一個參數:100個任務,第二個參數:每個任務處理100個點。兩個參數的乘積即是總的投擲次數。平均來說,投擲次數與精確度成正比。
計算的π值有點那個意思了。
更多實例待續。。。

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