1. 程式人生 > >大數據之hadoop

大數據之hadoop

傳輸 很多 問題 並行處理 dev 自己 reduce 恢復 分布式文件系統

一、大數據
大數據:解決海量數據問題的技術。大數據由巨型數據集組成,把數據集合並進行分析可得出許多額外的信息和數據關系性。
大數據是指無法在一定時間內用常規軟件工具對其內容進行抓取、管理和處理的數據集合。
大數據技術是指從各種各樣類型的數據中,快速獲得有價值信息的能力,適用於大數據的技術,包括大數據技術包括大規模並行處理數據庫,數據挖掘電網,分布式文件系統,分布式數據庫,雲計算平臺,互聯網和可擴展的存儲系統。

大數據的特性:
大體量:可從數百TB到數十數百PB、甚至EB的規模
多樣性:大數據包括各種形式的形態的數據
時效性:需要在一定的時間限度下得到及時的處理
準確性:處理的結果要保證一定的準確性
大價值:大數據包含很多深度的價值,大數據分析挖掘和利用將帶來巨大的商業價值

二、Hadoop
hadoop是一種分析和處理海量數據的軟件平臺,是一款開源軟件,使用Java開發,可以提供一個分布式基礎架構

hadoop特點:高可靠性、高擴展性、高效性、高容錯性、低成本

hadoop常用組件:
-HDFS(Hadoop分布式文件系統)
-Mapreduce(分布式計算框架)
-Zookeeper(分布式協作服務)
-Hbase(分布式列存數據庫)
-Hive(基於Hadoop的數據倉庫)
-Sqoop(數據同步工具)
-Pig(基於Hadoop的數據流系統)
-Mahout(數據挖掘算法庫)
-Flume(日誌收集工具)

hadoop核心組件:
-HDFS:分布式文件系統
-Yarn:集群資源管理系統

-MapReduce:分布式計算框架

HDFS角色及概念
-NameNode:Master節點,管理HDFS的名稱空間和數據塊映射信息,配置副本策略,處理所有客戶端請求。
-Secondary NameNode:定期合幵 fsimage 和fsedits,推送給NameNode,緊急情況下,可輔助恢復NameNode
-DataNode:數據存儲節點,存儲實際的數據,匯報存儲信息給NameNode。
-Client:切分文件,訪問HDFS,與NameNode交互,獲取文件位置信息,與DataNode交互,讀取和寫入數據。

Hadoop的部署模式有三種:
-單機
-偽分布式(所有角色裝一臺機器上)
-完全分布式(不同角色裝不同機器)

三、單機模式:
1.獲取軟件
http://hadoop.apache.org
下載:hadoop-2.7.6.tar.gz
解壓:tar -xf hadoop-2.7.6.tar.gz
安裝:mv hadoop-2.7.6

2.安裝java環境,jps工具
yum -y install java-1.8.0-openjdk
yum -y install java-1.8.0-openjdk-devel

3.設置環境變量
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre"
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"

分析單詞出現的次數
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount oo xx

四、完全分布式:
-分布式文件系統:是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡節點相連,分布式文件系統的設計基於客戶機/服務器模式;分布式文件系統可以有效解決數據的存儲和管理難題,將固定於某個地點的某個文件系統,擴展到任意多個地點/多個文件系統,眾多的節點組成一個文件系統網絡,每個節點可以分布在不同的地點,通過網絡進行節點間的通信和數據傳輸。

集群組建條件:

  • ALL: 能相互 ping 通 (配置 /etc/hosts)
  • ALL: 安裝 java-1.8.0-openjdk-devel
  • NN1: 能 ssh 免密登錄所有集群主機,包括自己(不能提示輸入 yes)
    ssh 免密登錄:部署 sshkey
    不輸入 yes:修改 /etc/ssh/ssh_config
    60行添加 StrictHostKeyChecking no

配置文件格式
<property>
<name></name>
<value></value>
<description></description>
</property>

配置文件參考網址http://hadoop.apache.org
cd /usr/local/hadoop/etc/hadoop

1.配置環境變量文件hadoop-env.sh(參見三、3)
2.核心配置文件core-site.xml
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs:///nn01:9000</value>
<description></description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop</value>
<description></description>
</property>
</configuration>
在所有主機上創建/var/hadoop

2.完全分布式配置hdfs-site.xml
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.datanode.http-address</name>
<value>nn01:50070</value>
<description></description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>nn01:50090</value>
<description></description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description></description>
</property>
</configuration>

3.配置slaves
vim slaves
node01
node02
node03

4.同步配置到所有主機

5.格式化 namenode (nn01上操作)
./bin/hdfs namenode -format

6.啟動集群 (nn01上操作)
./sbin/start-dfs.sh
停止集群可以使用 ./sbin/stop-dfs.sh

7.驗證角色 jps (所有主機操作)

8.驗證集群是否組建成功 (nn01上操作)
./bin/hdfs dfsadmin -report

服務啟動日誌路徑 /usr/local/hadoop/logs

大數據之hadoop