大數據的發展歷史 3V:volume、velocity、variety(結構化和非結構化數據)、value(價值密度低) 大數據帶來的技術挑戰 存儲容量不斷增加 獲取有價值的信息的難度:搜索、廣告、推薦 大容量、多類型、高時效的數據處理場景,使得從數據中獲取有價值的信息變得非常困難 hadoop理論 ...
大數據的發展歷史
3V:volume、velocity、variety(結構化和非結構化數據)、value(價值密度低)
大數據帶來的技術挑戰
- 存儲容量不斷增加
- 獲取有價值的信息的難度:搜索、廣告、推薦
- 大容量、多類型、高時效的數據處理場景,使得從數據中獲取有價值的信息變得非常困難
hadoop理論概述
hadoop發展簡史
- apache nutch項目,是一個開源網路搜索引擎
- 谷歌發表GFS,是HDFS的前身
- 谷歌發表了mapreduce分散式編程思想
- nutch開源實現了mapreduce
hadoop簡介
- 是apache軟體基金會下的一個開源分散式計算平臺
- java語言,跨平臺性
- 在分散式環境下提供了海量數據的處理能力
- 幾乎所有廠商都圍繞hadoop提供開發工具
hadoop核心
- 分散式文件系統HDFS
- 分散式計算MapReduce
hadoop特性
- 高可靠性
- 高效性
- 高可擴展性
- 高容錯性
- 成本低
- linux
- 支持多種編程語言
hadoop生態系統
- HDFS:分散式文件系統
- mapreduce:分散式並行編程模型
- yarn:資源管理和調度器
- tez運行在yarn之上的下一代hadoop查詢處理框架,他會將很多的mr任務分析優化後構建一個郵箱無環圖,保證最高的工作效率
- hive:hadoop上的數據倉庫
- hbase:非關係型分散式資料庫
- pig:基於hadoop的大規模數據分析平臺
- sqoop:用於在hadoop與傳統資料庫之間進行數據傳遞
- oozie:工作流管理系統
- zookeeper:提供分散式協調一致性服務
- storm:流計算框架
- flume:分散式海量日誌採集、聚合和傳輸的系統
- ambari:快速部署工具
- kafka:分散式發佈訂閱消息系統,可以處理消費者規模的網站中所有動作流數據
- spark:類似於hadoop mapreduce的通用並行框架
hadoop偽分佈模式安裝
主要流程
- 創建用戶及用戶組
sudo useradd -d /home/zhangyu -m zhangyu
sudo passwd zhangyu
sudo usermod -G sudo zhangyu
su zhangyu
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
ssh localhost
- 創建apps和data目錄並修改許可權
sudo mkdir /apps
sudo mkdir /data
sudo chown -R zhangyu:zhangyu /apps
sudo chown -R zhangyu:zhangyu /data
- 下載hadoop和java
mkdir -p /data/hadoop1
cd /data/hadoop1
wget java
wget hadoop
tar -xzvf jdk.tar.gz -C /apps
tar -xzvf hadoop.tar.gz -C /apps
cd /apps
mv jdk java
mv hadoop hadoop
- 添加上面兩個到環境變數
sudo vim ~/.bashrc
export JAVA_HOME=/apps/java
export PATH=JAVA_HOME/bin:$PATH
export HADOOP_HOME=/apps/hadoop
export PATH=HADOOP_HOME/bin:$PATH
source ~/.bashrc
java
hadoop
- 修改hadoop配置文件
cd /apps/hadoop/etc/hadoop
vim hadoop-env.sh
export JAVA_HOME=/apps/java
vim core-site.xml
//追加
<property>
<name>hadoop.tmp.dir</name> //臨時文件存儲位置
<value>/data/tmp/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name> //hdfs文件系統的地址
<value>hdfs://localhost:9000</value>
</property>
mkdir -p /data/tmp/hadoop/tmp
vim hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name> //配置元數據信息存儲位置
<value>/data/tmp/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name> //具體數據存儲位置
<value>/data/tmp/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name> //配置每個資料庫備份數,要根據節點數決定
<value>1</value>
</property>
<property>
<name>dfs.permissions.enabled</name> //配置hdfs是否啟用許可權認證
<value>false</value>
</property>
- 將集群中slave角色的節點的主機名添加進slaves文件中
vim slaves //將集群中的slave角色的節點的主機名添加經slaves文件中
//目前只有一臺節點,所以slaves文件內容只有localhost
- 格式化hdfs文件系統
hadoop namenode -format
- 輸入jps查看hdfs相關進程是否啟動
cd /apps/hadoop/sbin/
./start-dfs.sh
jps
hadoop fs -mkdir /myhadoop1
hadoop fs -ls -R /
- 配置mapreduce
cd /apps/hadoop/etc/hadoop/
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<property>
<name>mapreduce.framework.name</name> //配置mapreduce任務所使用的框架
<value>yarn</value>
</property>
- 配置yarn並且測試
vim yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name> //指定所用伺服器
<value>mapreduce_shuffle</value>
</property>
./start-yarn.sh
- 執行測試
cd /apps/hadoop/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.4.5.jar pi 3 3
hadoop開發插件安裝
mkdir -p /data/hadoop3
cd /data/hadoop3
wget http://192.168.1.100:60000/allfiles/hadoop3/hadoop-eclipse-plugin-2.6.0.jar
cp /data/hadoop3/hadoop-eclipse-plugin-2.6.0.jar /apps/eclipse/plugins/
- 進入圖形界面
window->open perspective->other
選擇map/reduce
點擊condole右上角藍色的大象添加相關配置
- 終端命令行
cd /apps/hadoop/sbin
./start-all.sh
hadoop常用命令
開啟、關閉hadoop
cd /apps/hadoop/sbin
./start-all.sh
cd /apps/hadoop/sbin
./stop-all.sh
命令格式
hadoop fs -命令 目標
hadoop fs -ls /user
查看版本
hdfs version
hdfs dfsadmin -report //查看系統狀態
目錄操作
hadoop fs -ls -R /
hadoop fs -mkdir /input
hadoop fs -mkdir -p /test/test1/test2
hadoop fs -rm -rf /input
文件操作
hadoop fs -touchz test.txt
hadoop fs -put test.txt /input //把本地文件上傳到input文件加下
hadoop fs -get /input/test.txt /data //把hadoop集群中的test文件下載到data目錄下
hadoop fs -cat /input/test.txt
hadoop fs -tail data.txt //同cat
hadoop fs -du -s /data.txt //查看文件大小
hadoop fs -text /test1/data.txt //將源文件輸出為文本格式
hadoop fs -stat data.txt //返回指定路徑的統計信息
hadoop fs -chown root /data.txt //改變文件所有者
hadoop fs -chmod 777 data.txt //賦予文件777許可權
hadoop fs -expunge //清空回收站
模式切換
hdfs dfsadmin -safemode enter
hdfs dfsadmin -safemode leave