大數據(big data),指沒法在必定時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是須要新處理模式才能具備更強的決策力、洞察發現力和流程優化能力的海量、高增加率和多樣化的信息資產。
最小的基本單位是bit,按順序給出全部單位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。
1Byte = 8bit 1K = 1024bit 1MB = 1024K 1G = 1024M
1T = 1024G 1P = 1024T 1E = 1024P 1Z = 1024E
1Y = 1024Z 1B = 1024Y 1N = 1024B 1D = 1024Nhtml
1)Volume(大量):
截至目前,人類生產的全部印刷材料的數據量是200PB,而歷史上全人類總共說過的話的數據量大約是5EB。當前,典型我的計算機硬盤的容量爲TB量級,而一些大企業的數據量已經接近EB量級。
java
2)Velocity(高速):
這是大數據區分於傳統數據挖掘的最顯著特徵。根據IDC的「數字宇宙」的報告,預計到2020年,全球數據使用量將達到35.2ZB。在如此海量的數據面前,處理數據的效率就是企業的生命。
天貓雙十一:2016年6分58秒,天貓交易額超過100億
node
3)Variety(多樣):
這種類型的多樣性也讓數據被分爲結構化數據和非結構化數據。相對於以往便於存儲的以數據庫/文本爲主的結構化數據,非結構化數據愈來愈多,包括網絡日誌、音頻、視頻、圖片、地理位置信息等,這些多類型的數據對數據的處理能力提出了更高要求。
訂單數據:
網絡數據:
4)Value(低價值密度):
價值密度的高低與數據總量的大小成反比。好比,在一天監控視頻中,咱們只關心宋宋老師晚上在牀上健身那一分鐘,如何快速對有價值數據「提純」成爲目前大數據背景下待解決的難題。
mysql
1)O2O:百度大數據+平臺經過先進的線上線下打通技術和客流分析能力,助力商家精細化運營,提高銷量。
2)零售:探索用戶價值,提供個性化服務解決方案;貫穿網絡與實體零售,攜手創造極致體驗。經典案例,子尿布+啤酒。
3)旅遊:深度結合百度獨有大數據能力與旅遊行業需求,共建旅遊產業智慧管理、智慧服務和智慧營銷的將來。
4)商品廣告推薦:給用戶推薦訪問過的商品廣告類型
5) 房產:大數據全面助力房地產行業,打造精準投策與營銷,選出更合適的地,建造更合適的樓,賣給更合適的人。
6)保險:海量數據挖掘及風險預測,助力保險行業精準營銷,提高精細化訂價能力。
7)金融:多維度體現用戶特徵,幫助金融機構推薦優質客戶,防範欺詐風險。
8)移動聯通:移動聯通:根據用戶年齡、職業、消費狀況,分析統計哪一種套餐適合哪類人羣。對市場人羣精準定製。
9)人工智能
linux
1)黨的十八屆五中全會提出「實施國家大數據戰略」,國務院印發《促進大數據發展行動綱要》,大數據技術和應用處於創新突破期,國內市場需求處於爆發期,我國大數據產業面臨重要的發展機遇。
2)國際數據公司IDC預測,到2020年,企業基於大數據計算分析平臺的支出將突破5000億美圓。目前,我國大數據人才只有46萬,將來3到5年人才缺口達150萬之多。
人才缺口計算
150w-40w=110w
110W/5年 = 22w/年
22w/12月=1.83w/月
自古不變的真理:先入行者吃肉,後入行者喝湯,最後到的買單!
3)2017年北京大學、中國人民大學、北京郵電大學等25所高校成功申請開設大數據課程。
4)大數據屬於高新技術,大牛少,升職競爭小;
5)在北京大數據開發工程師的平均薪水已經到17800元(數據統計來職友集),並且目前還保持強勁的發展勢頭。
c++
企業數據部的通常組織結構,適用於大中型企業。web
1)Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構
2)主要解決,海量數據的 存儲 和海量數據的 分析計算 問題。
3)廣義上來講,HADOOP一般是指一個更普遍的概念——HADOOP生態圈
sql
1)Lucene–Doug Cutting開創的開源軟件,用java書寫代碼,實現與Google相似的全文搜索功能,它提供了全文檢索引擎的架構,包括完整的查詢引擎和索引引擎
2)2001年年末成爲apache基金會的一個子項目
3)對於大數量的場景,Lucene面對與Google一樣的困難
4)學習和模仿Google解決這些問題的辦法 :微型版Nutch
5)能夠說Google是hadoop的思想之源(Google在大數據方面的三篇論文)
GFS —>HDFS
Map-Reduce —>MR
BigTable —>Hbase
6)2003-2004年,Google公開了部分GFS和Mapreduce思想的細節,以此爲基礎Doug Cutting等人用了2年業餘時間實現了DFS和Mapreduce機制,使Nutch性能飆升
7)2005 年Hadoop 做爲 Lucene的子項目 Nutch的一部分正式引入Apache基金會。2006 年 3 月份,Map-Reduce和Nutch Distributed File System (NDFS) 分別被歸入稱爲 Hadoop 的項目中
8)名字來源於Doug Cutting兒子的玩具大象
9)Hadoop就此誕生並迅速發展,標誌這雲計算時代來臨數據庫
Hadoop 三大發行版本: Apache、Cloudera、Hortonworks
Apache版本最原始(最基礎)的版本,對於入門學習最好。
Cloudera在大型互聯網企業中用的較多。
Hortonworks文檔較好。apache
1)Cloudera Hadoop
(1)2008年成立的Cloudera是最先將Hadoop商用的公司,爲合做夥伴提供Hadoop的商用解決方案,主要是包括支持、諮詢服務、培訓。
(2)2009年Hadoop的創始人Doug Cutting也加盟Cloudera公司。Cloudera產品主要爲CDH,Cloudera Manager,Cloudera Support
(3)CDH是Cloudera的Hadoop發行版,徹底開源,比Apache Hadoop在兼容性,安全性,穩定性上有所加強。
(4)Cloudera Manager是集羣的軟件分發及管理監控平臺,能夠在幾個小時內部署好一個Hadoop集羣,並對集羣的節點及服務進行實時監控。Cloudera Support便是對Hadoop的技術支持。
(5)Cloudera的標價爲每一年每一個節點4000美圓。Cloudera開發並貢獻了可實時處理大數據的Impala項目。
2)Hortonworks Hadoop
(1)2011年成立的Hortonworks是雅虎與硅谷風投公司Benchmark Capital合資組建。
(2)公司成立之初就吸納了大約25名至30名專門研究Hadoop的雅虎工程師,上述工程師均在2005年開始協助雅虎開發Hadoop,貢獻了Hadoop80%的代碼。
(3)雅虎工程副總裁、雅虎Hadoop開發團隊負責人Eric Baldeschwieler出任Hortonworks的首席執行官。
(4)Hortonworks的主打產品是Hortonworks Data Platform(HDP),也一樣是100%開源的產品,HDP除常見的項目外還包括了Ambari,一款開源的安裝和管理系統。
(5)HCatalog,一個元數據管理系統,HCatalog現已集成到Facebook開源的Hive中。Hortonworks的Stinger開創性的極大的優化了Hive項目。Hortonworks爲入門提供了一個很是好的,易於使用的沙盒。
(6)Hortonworks開發了不少加強特性並提交至核心主幹,這使得Apache Hadoop可以在包括Window Server和Windows Azure在內的microsoft Windows平臺上本地運行。訂價以集羣爲基礎,每10個節點每一年爲12500美圓。
1)高可靠性:由於Hadoop假設計算元素和存儲會出現故障,由於它維護多個工做數據副本,在出現故障時能夠對失敗的節點從新分佈處理。
2)高擴展性:在集羣間分配任務數據,可方便的擴展數以千計的節點。
3) 高效性:在MapReduce的思想下,Hadoop是並行工做的,以加快任務處理速度。
4)高容錯性:自動保存多份副本數據,而且可以自動將失敗的任務從新分配。
1)Hadoop HDFS:一個高可靠、高吞吐量的分佈式文件系統。
2)Hadoop MapReduce:一個分佈式的離線並行計算框架。
3)Hadoop YARN:做業調度與集羣資源管理的框架。
4)Hadoop Common:支持其餘模塊的工具模塊。
HSFS至關於電腦磁盤
Hadoop MapReduce至關於應用程序
Hadoop YARN至關於電腦系統
1)NameNode(nn):存儲文件的元數據,如文件名,文件目錄結構,文件屬性(生成時間、副本數、文件權限),以及每一個文件的塊列表和塊所在的DataNode等。
2)DataNode(dn):在本地文件系統存儲文件塊數據,以及塊數據的校驗和。
3)Secondary NameNode(2nn):用來監控HDFS狀態的輔助後臺程序,每隔一段時間獲取HDFS元數據的快照。輔助NameNode工做
1)ResourceManager(rm):處理客戶端請求、啓動/監控ApplicationMaster、監控NodeManager、資源分配與調度;
2)NodeManager(nm):單個節點上的資源管理、處理來自ResourceManager的命令、處理來自ApplicationMaster的命令;
3)ApplicationMaster:數據切分、爲應用程序申請資源,並分配給內部任務、任務監控與容錯。
4)Container:對任務運行環境的抽象,封裝了CPU、內存等多維資源以及環境變量、啓動命令等任務運行相關的信息。
MapReduce將計算過程分爲兩個階段:Map和Reduce
1)Map階段並行處理輸入數據
2)Reduce階段對Map結果進行彙總
圖中涉及的技術名詞解釋以下:
1)Sqoop:sqoop是一款開源的工具,主要用於在Hadoop(Hive)與傳統的數據庫(mysql)間進行數據的傳遞,能夠將一個關係型數據庫(例如 : MySQL ,Oracle 等)中的數據導進到Hadoop的HDFS中,也能夠將HDFS的數據導進到關係型數據庫中。
2)Flume:Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各種數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各類數據接受方(可定製)的能力。
3)Kafka:Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,有以下特性:
(1)經過O(1)的磁盤數據結構提供消息的持久化,這種結構對於即便數以TB的消息存儲也可以保持長時間的穩定性能。
(2)高吞吐量:即便是很是普通的硬件Kafka也能夠支持每秒數百萬的消息
(3)支持經過Kafka服務器和消費機集羣來分區消息。
(4)支持Hadoop並行數據加載。
4)Storm:Storm爲分佈式實時計算提供了一組通用原語,可被用於「流處理」之中,實時處理消息並更新數據庫。這是管理隊列及工做者集羣的另外一種方式。 Storm也可被用於「連續計算」(continuous computation),對數據流作連續查詢,在計算時就將結果以流的形式輸出給用戶。
5)Spark:Spark是當前最流行的開源大數據內存計算框架。能夠基於Hadoop上存儲的大數據進行計算。
6)Oozie:Oozie是一個管理Hdoop做業(job)的工做流程調度管理系統。Oozie協調做業就是經過時間(頻率)和有效數據觸發當前的Oozie工做流程。
7)Hbase:HBase是一個分佈式的、面向列的開源數據庫。HBase不一樣於通常的關係數據庫,它是一個適合於非結構化數據存儲的數據庫。
8)Hive:hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供簡單的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行。 其優勢是學習成本低,能夠經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
10)R語言:R是用於統計分析、繪圖的語言和操做環境。R是屬於GNU系統的一個自由、免費、源代碼開放的軟件,它是一個用於統計計算和統計製圖的優秀工具。
11)Mahout:
Apache Mahout是個可擴展的機器學習和數據挖掘庫,當前Mahout支持主要的4個用例:
推薦挖掘:蒐集用戶動做並以此給用戶推薦可能喜歡的事物。
彙集:收集文件並進行相關文件分組。
分類:從現有的分類文檔中學習,尋找文檔中的類似特徵,併爲無標籤的文檔進行正確的歸類。
頻繁項集挖掘:將一組項分組,並識別哪些個別項會常常一塊兒出現。
12)ZooKeeper:Zookeeper是Google的Chubby一個開源的實現。它是一個針對大型分佈式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、 分佈式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
最後,從新啓動系統。
[root@hadoop101 ~]# sync
[root@hadoop101 ~]# reboot
1)克隆虛擬機
2)啓動虛擬機
1)在終端命令窗口中輸入
[root@hadoop101 /]#vim /etc/udev/rules.d/70-persistent-net.rules
進入以下頁面,刪除eth0該行;將eth1修改成eth0,同時複製物理ip地址
由於這個是本機的物理網卡
2)修改IP地址
[root@hadoop101 /]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
須要修改的內容有5項:
IPADDR=192.168.1.101
GATEWAY=192.168.1.2
ONBOOT=yes
BOOTPROTO=static
DNS1=192.168.1.2
(1)修改前
(2)修改後
:wq 保存退出
3)執行service network restart
4)若是報錯,reboot,重啓虛擬機
1)修改linux的hosts文件
(1)進入Linux系統查看本機的主機名。經過hostname命令查看
[root@hadoop ~]# hostname
hadoop100
(2)若是感受此主機名不合適,咱們能夠進行修改。經過編輯/etc/sysconfig/network文件
#vi /etc/sysconfig/network
文件中內容
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop101
注意:主機名稱不要有「_」下劃線
(3)打開此文件後,能夠看到主機名。修改此主機名爲咱們想要修改的主機名hadoop101。
(4)保存退出。
(5)打開/etc/hosts
vim /etc/hosts
添加以下內容
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
192.168.1.105 hadoop105
192.168.1.106 hadoop106
192.168.1.107 hadoop107
192.168.1.108 hadoop108
192.168.1.109 hadoop109
192.168.1.110 hadoop110
(6)並重啓設備,重啓後,查看主機名,已經修改爲功
2)修改window7的hosts文件
(1)進入C:\Windows\System32\drivers\etc路徑
(2)打開hosts文件並添加以下內容
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
192.168.1.105 hadoop105
192.168.1.106 hadoop106
192.168.1.107 hadoop107
192.168.1.108 hadoop108
192.168.1.109 hadoop109
192.168.1.110 hadoop110
1)查看防火牆開機啓動狀態
chkconfig iptables --list
2)關閉防火牆
chkconfig iptables off
1)建立atguigu用戶
在root用戶裏面執行以下操做
2)設置atguigu用戶具備root權限
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,以下所示:
## Allow root to run any commands anywhere root ALL=(ALL) ALL atguigu ALL=(ALL) ALL
修改完畢,如今能夠用atguigu賬號登陸,而後用命令 su - ,便可得到root權限進行操做。
3)在/opt目錄下建立文件夾
(1)在root用戶下建立module、software文件夾(若是mkdir的命令不行就sudo mkdir)
mkdir module
mkdir software
(2)修改module、software文件夾的全部者
[root@hadoop101 opt]# chown atguigu module
[root@hadoop101 opt]# chown atguigu software
[root@hadoop101 opt]# ls -al
總用量 24
drwxr-xr-x. 6 root root 4096 4月 24 09:07 .
dr-xr-xr-x. 23 root root 4096 4月 24 08:52 …
drwxr-xr-x. 4 atguigu root 4096 4月 23 16:26 module
drwxr-xr-x. 2 root root 4096 3月 26 2015 rh
drwxr-xr-x. 2 atguigu root 4096 4月 23 16:25 software
1)卸載現有jdk
(1)查詢是否安裝java軟件:
rpm -qa|grep java
(2)若是安裝的版本低於1.7,卸載該jdk:
rpm -e 軟件包
2)用filezilla工具將jdk、Hadoop-2.7.2.tar.gz(官方原版的)導入到opt目錄下面的software文件夾下面
3)在linux系統下的opt目錄中查看軟件包是否導入成功。
[root@hadoop101opt]# cd software/
[root@hadoop101software]# ls
jdk-7u79-linux-x64.gz hadoop-2.7.2.tar.gz
4)解壓jdk到/opt/module目錄下
tar -zxf jdk-7u79-linux-x64.gz -C /opt/module/
5)配置jdk環境變量
(1)先獲取jdk路徑:
[root@hadoop101 jdk1.7.0_79]# pwd
/opt/module/jdk1.7.0_79
(2)打開/etc/profile文件:
[root@hadoop101 jdk1.7.0_79]# vi /etc/profile
在profie文件末尾添加jdk路徑:
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.7.0_79
export PATH=
JAVA_HOME/bin
(3)保存後退出:
:wq
(4)讓修改後的文件生效:
[root@hadoop101 jdk1.7.0_79]# source /etc/profile
(5)重啓(若是java –version能夠用就不用重啓):
[root@hadoop101 jdk1.7.0_79]# sync
[root@hadoop101 jdk1.7.0_79]# reboot
6)測試jdk安裝成功
[root@hadoop101 jdk1.7.0_79]# java -version
java version 「1.7.0_79」
1)進入到Hadoop安裝包路徑下:
[root@hadoop101 ~]# cd /opt/software/
2)解壓安裝文件到/opt/module下面
[root@hadoop101 software]# tar -zxf hadoop-2.7.2.tar.gz -C /opt/module/
3)查看是否解壓成功
[root@hadoop101 software]# ls /opt/module/
hadoop-2.7.2
hadoop中的內容:
bin 一些命令
etc 配置文件
include c語言的一些類庫
lib libexec 第三方的類庫
LIECENSE.txt NOTICE.txt README.txt 描述性文件
sbin 用戶命令
share jar包
4)配置hadoop中的hadoop-env.sh
cd /opt/module/hadoop-2.7.2
ll
cd etc/
ll
cd hadoop
ll (發現有hadoop-env.sh)
vi hadoop-env.sh
找到
export JAVA_HOME=$(JAVA_HOME)
修改成
export JAVA_HOME=/opt/module/jdk1.7.0_79(本身的java home)
5)將hadoop添加到環境變量
(1)獲取hadoop安裝路徑:
[root@ hadoop101 hadoop-2.7.2]# pwd
/opt/module/hadoop-2.7.2
(2)打開/etc/profile文件:
root@ hadoop101 hadoop-2.7.2]# vi /etc/profile
在profie文件末尾添加jdk路徑:(shitf+g)
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=
HADOOP_HOME/bin
export PATH=
HADOOP_HOME/sbin
(3)保存後退出:
:wq
(4)讓修改後的文件生效:
root@ hadoop101 hadoop-2.7.2]# source /etc/profile
(5)重啓(若是hadoop命令不能用再重啓):
root@ hadoop101 hadoop-2.7.2]# sync
root@ hadoop101 hadoop-2.7.2]# reboot
1)官方網址
(1)官方網站:
http://hadoop.apache.org/
(2)各個版本歸檔庫地址
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
(3)hadoop2.7.2版本詳情介紹
http://hadoop.apache.org/docs/r2.7.2/
2)Hadoop運行模式
(1)本地模式(默認模式):
不須要啓用單獨進程,直接能夠運行,測試和開發時使用。
(2)僞分佈式模式:
等同於徹底分佈式,只有一個節點。
(3)徹底分佈式模式:
多個節點一塊兒運行。
1)建立在hadoop-2.7.2文件下面建立一個input文件夾
[atguigu@hadoop101 hadoop-2.7.2]$mkdir input
2)將hadoop的xml配置文件複製到input
[atguigu@hadoop101 hadoop-2.7.2]$cp etc/hadoop/*.xml input
3)執行share目錄下的mapreduce程序
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
若是配置了hadoop環境變量的話能夠直接hadoop
input 輸入文件夾,是說在這個文件夾下面查找數據,前面已經輸入進去了
output查詢的結果放到哪一個文件中去,output不容許已經存在,不然會報錯。也能夠起其餘的名字,好比out
dfs[a-z.]+ dfs開頭[] 表示可選 a-z可選 + 表示還能夠有其餘的字母
ll
發現多了一個outpput目錄,
cd output
ll
發現有以下兩個文件
part-r-00000(地址內容)
_SUCCESS(標誌性的)
cat part-r-00000
1 dfsadmin
從一堆配置文件中找到了dfsadmin,而且這個單詞出現的次數是1
4)查看輸出結果
[atguigu@hadoop101 hadoop-2.7.2]$ cat output/*
1)建立在hadoop-2.7.2文件下面建立一個wcinput文件夾
[atguigu@hadoop101 hadoop-2.7.2]$mkdir wcinput
2)在wcinput文件下建立一個wc.input文件
[atguigu@hadoop101 hadoop-2.7.2]$cd wcinput [atguigu@hadoop101 wcinput]$touch wc.input
3)編輯wc.input文件 輸入任意字符均可以
4)回到hadoop目錄/opt/module/hadoop-2.7.2
5)執行程序:
[atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
6)查看結果:
[atguigu@hadoop101 hadoop-2.7.2]$cat wcoutput/part-r-00000
atguigu 2
hadoop 2
mapreduce 1
yarn 1
1)分析:
(1)準備1臺客戶機
(2)安裝jdk
(3)配置環境變量
(4)安裝hadoop
(5)配置環境變量
(6)配置集羣
(7)啓動、測試集羣增、刪、查
(8)在HDFS上執行wordcount案例
服務器最小系統
2.1 虛擬機網絡模式設置爲NAT
2.2 克隆虛擬機
2.3 修改成靜態ip (1)[root@hadoop101 /]#vim /etc/udev/rules.d/70-persistent-net.rules 刪除eth0,升級eth1爲eth0;
複製物理ip地址。 (2)[root@hadoop101 /]#vim
/etc/sysconfig/network-scripts/ifcfg-eth0 粘貼複製的物理ip地址
IPADDR=192.168.1.101
2.4修改主機名 (1)#vi /etc/sysconfig/network 修改主機名稱 (2)vim /etc/hosts
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102 -------------------------------------- 重啓: sync reboot
2.5 關閉防火牆 chkconfig iptables --list
2)執行步驟
須要配置hadoop文件以下
(1)配置集羣
(a)配置:hadoop-env.sh
Linux系統中獲取jdk的安裝路徑:
[root@ hadoop101 ~]# echo $JAVA_HOME
/opt/module/jdk1.7.0_79
修改JAVA_HOME 路徑:
(b)配置:core-site.xml
<!--指定HDFS中NameNode的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:8020</value> //hdfs:// hdfs協議,相似http:// </property> <!--指定hadoop運行時產生文件的存儲目錄--> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property>
經過查看apache官網發現,fs.defaultFS默認值是file:/// 也就是本地文件,這也就是爲何在本地模式下不須要任何配置直接能運行,而這裏咱們是用集羣的hdfs的方式來控制。
(c)配置:hdfs-site.xml
<!--指定HDFS副本的數量--> <property> <name>dfs.replication</name> <value>1</value> </property>
默認值是3
(2)啓動集羣
(a)格式化namenode(第一次啓動時格式化,之後就不要總格式化)
cd hadoop-2.7.2/bin (101機器,由於是僞集羣,也就是本機)
ll (發現有一個hdfs嗎,專門用來處理hdfs相關的)
cd hadoop-2.7.2
bin/hdfs namenode -format
(b)啓動namenode
cd cd hadoop-2.7.2
sbin/hadoop-daemon.sh start namenode
(c)啓動datanode
sbin/hadoop-daemon.sh start datanode
(3)查看集羣
(a)查看是否啓動成功
[root@hadoop101 ~]# jps
13586 NameNode
13668 DataNode
13786 Jps
(b)查看產生的log日誌
當前目錄:/opt/module/hadoop-2.7.2/logs
[root@hadoop101 logs]# ls
hadoop-root-datanode-hadoop.atguigu.com.log
hadoop-root-datanode-hadoop.atguigu.com.out
hadoop-root-namenode-hadoop.atguigu.com.log
hadoop-root-namenode-hadoop.atguigu.com.out
SecurityAuth-root.audit
[root@hadoop101 logs]# cat hadoop-root-datanode-hadoop.atguigu.com.log
(c)web端查看HDFS文件系統
輸入 http://192.168.1.101:50070/
這個端口號,是hadoop框架提供的訪問端口
http://192.168.1.101:50070/dfshealth.html#tab-overview
注意:若是不能查看,看以下帖子處理
http://www.cnblogs.com/zlslch/p/6604189.html
startd 建立時間
version 版本號
conpiled 完成時間
cluster id 集羣id號
block Pool id 模塊的版本號
node 顯示的節點 能夠看到仍是本機101
hdfs具體存放數據的路徑,這個頁面只能查看,要想建立須要經過linu
(4)操做集羣
(a)在hdfs文件系統上建立一個input文件夾
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/atguigu/mapreduce/wordcount/input
注意:bin/hdfs dfs等價於hadoop fs
完了以後在這個頁面上就會出現相應的目錄
-R是遞歸、-ls 相似linux ls ,查看根目錄下的fs -lsr和-ls -R是等價的
(b)將測試文件內容上傳到文件系統上
bin/hdfs dfs -put wcinput/wc.input /user/atguigu/mapreduce/wordcount/input/
是hadoop-2.7.2目錄下上面的例子中建立的文件,這裏能夠上傳其餘的文件,這裏只是舉例wcinput/wc.input
可是這個頁面只容許查看不容許修改
(c)查看上傳的文件是否正確
bin/hdfs dfs -ls /user/atguigu/mapreduce/wordcount/input/
bin/hdfs dfs -cat /user/atguigu/mapreduce/wordcount/input/wc.input
(d)在Hdfs上運行mapreduce程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/mapreduce/wordcount/input/ /user/atguigu/mapreduce/wordcount/output
wordcount 是wordcount案例,於上面的官方案例的區別是吧input和output 的路徑換成了hdfs的路徑
(e)查看輸出結果
命令行查看:
bin/hdfs dfs -cat /user/atguigu/mapreduce/wordcount/output/*
瀏覽器查看
(f)將測試文件內容下載到本地
hadoop fs -get /user/atguigu/mapreduce/wordcount/output/part-r-00000 ./wcoutput/
(g)刪除輸出結果
hdfs dfs -rmr /user/atguigu/mapreduce/wordcount/output
-rmr 遞歸刪除
爲何要刪除output目錄?
由於在再次運行的時候就運行不了了
這裏注意,集羣不能正常啓動的問題:
第一次啓動沒問題,第二次啓動時,會有文件殘留,bin/hdfs namenode -formate 會產生一個新的namenode文件(id),就不認識一點的datanode了,致使進羣不能正常啓動。
解決辦法:在格式化以前,刪除datanode裏面的信息(默認在/tmp,若是配置該目錄,那就要去你配置的目錄下刪除(hadoop-2.7.2/data/tmp))
1)分析:
(1)準備1臺客戶機
(2)安裝jdk
(3)配置環境變量
(4)安裝hadoop
(5)配置環境變量
(6)配置集羣yarn上運行
(7)啓動、測試集羣增、刪、查
(8)在yarn上執行wordcount案例
2)執行步驟
(1)配置集羣
(a)配置yarn-env.sh
配置一下JAVA_HOME
記住env.sh只須要配置JAVA_HOME
(b)配置yarn-site.xml
<!--reducer獲取數據的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> //mapreduce_shuffle獲取數據的方式 </property> <!--指定YARN的ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop101</value> </property>
cd /opt/module/hadoop-2.7.2/etc/hadoop
vi yarn-site.xml
(c)配置:mapred-env.sh
配置一下JAVA_HOME (同上)
(d)配置: (對mapred-site.xml.template從新命名爲) mapred-site.xml
cd /opt/module/hadoop-2.7.2/etc/hadoop
ll
mv mapred-site.xml.template mapred-site.xml
<!--指定mr運行的yarn上--> <property> <name>mapreduce.fremework.name</name> <value>yarn</value> </property>
(2)啓動集羣
啓動以前先開啓namenode和datanode
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
(a)啓動resourcemanager
sbin/yarn-daemon.sh start resourcemanager (hadoop-2.7.2/sbin目錄)
(b)啓動nodemanager
sbin/yarn-daemon.sh start nodemanager
(3)集羣操做
(a)yarn的瀏覽器頁面查看
http://192.168.1.101:8088/cluster
(b)刪除文件系統上的output文件
bin/hdfs dfs -rm -R /user/atguigu/mapreduce/wordcount/output
(c)執行mapreduce程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/mapreduce/wordcount/input /user/atguigu/mapreduce/wordcount/output
能夠看到map所有執行完畢,以後纔開始執行reduce
(d)查看運行結果
bin/hdfs dfs -cat /user/atguigu/mapreduce/wordcount/output/*
1)中止進程
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh stop datanode
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh stop namenode
關閉以後嘗試啓動
發現啓動不了
由於這裏的tmp沒有刪除,這裏的目錄是默認值在下面有講
rm -rf hadoop-atguigu
rm -rf hadoop-atguigu-namenode.pid
cd …/(hadoop-2.2.7)
rm -rf logs (裏面保存着上一個集羣的日誌)
2)修改hadoop.tmp.dir
mkdir -p data/tmp 也能夠不建立,由於下面指定了
[core-site.xml]
cd hadoop-2.7.2/rtc/hadoop
vi core-site.xml
<!----> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property>
默認值
3)格式化NameNode
[atguigu@hadoop101 hadoop-2.7.2]$ hadoop namenode -format
4)啓動全部進程
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
5)查看/opt/module/hadoop-2.7.2/data/tmp這個目錄下的內容。
Hadoop配置文件分兩類:默認配置文件和自定義配置文件,只有用戶想修改某一默認配置值時,才須要修改自定義配置文件,更改相應屬性值。
(1)默認配置文件:存放在hadoop相應的jar包中
找到從官網上下載的hadoop包,解壓
cd hadoop-2.7.2/share/hadoop/hdfs(mapreduce、yarn)
[core-default.xml]
hadoop-common-2.7.2.jar/ core-default.xml
[hdfs-default.xml]
hadoop-hdfs-2.7.2.jar/ hdfs-default.xml
[yarn-default.xml]
hadoop-yarn-common-2.7.2.jar/ yarn-default.xml
[core-default.xml]
hadoop-mapreduce-client-core-2.7.2.jar/ core-default.xml
(2)自定義配置文件:存放在$HADOOP_HOME/etc/hadoop
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
1)配置mapred-site.xml 2)查看啓動歷史服務器文件目錄:
[root@hadoop101 hadoop-2.7.2]# ls sbin/ |grep mr
mr-jobhistory-daemon.sh
3)啓動歷史服務器
sbin/mr-jobhistory-daemon.sh start historyserver
4)查看歷史服務器是否啓動
jps
5)查看jobhistory
http://192.168.1.101:19888/jobhistory
日誌彙集概念:應用運行完成之後,將日誌信息上傳到HDFS系統上 開啓日誌彙集功能步驟:
(1)配置yarn-site.xml
(2)關閉nodemanager 、resourcemanager和historymanager
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
sbin/mr-jobhistory-daemon.sh stop historyserver
(3)啓動nodemanager 、resourcemanager和historymanager
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/mr-jobhistory-daemon.sh start historyserver
(4)刪除hdfs上已經存在的hdfs文件
bin/hdfs dfs -rm -R /user/atguigu/mapreduce/wordcount/output
(5)執行wordcount程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/atguigu/mapreduce/wordcount/input /user/atguigu/mapreduce/wordcount/output
(6)查看日誌
http://192.168.1.101:19888/jobhistory
分析:
1)準備3臺客戶機( 關閉防火牆、靜態ip、主機名稱 )
2)安裝jdk
3)配置環境變量
4)安裝hadoop
5)配置環境變量
6)安裝ssh
7)配置集羣
8)啓動測試集羣
詳見2.2-2.3章。
簡單歸納:
先準備一個什麼都沒有的虛擬機,
主機ip 主機名 防火牆所有關閉
而後克隆兩臺
修改ip hostname hosts 等
以後重啓
詳見2.4章。
1)scp能夠實現服務器與服務器之間的數據拷貝。
2)案例實操
(1)將hadoop101中/opt/module和/opt/software文件拷貝到hadoop10二、hadoop103和hadoop104上。
[root@hadoop101 /]# scp -r /opt/module/ root@hadoop102:/opt
[root@hadoop101 /]# scp -r /opt/software/ root@hadoop102:/opt
[root@hadoop101 /]# scp -r /opt/module/ root@hadoop103:/opt
[root@hadoop101 /]# scp -r /opt/software/ root@hadoop103:/opt
[root@hadoop101 /]# scp -r /opt/module/ root@hadoop104:/opt
[root@hadoop101 /]# scp -r /opt/software/ root@hadoop105:/opt
(2)將192.168.1.102服務器上的文件拷貝到當前用戶下。
[root@hadoop101 opt]# scp root@hadoop102:/etc/profile /opt/tmp/
(3)實現兩臺遠程機器之間的文件傳輸(hadoop103主機文件拷貝到hadoop104主機上)
[atguigu@hadoop102 test]$ scp atguigu@hadoop103:/opt/test/haha atguigu@hadoop104:/opt/test/
1)配置ssh
(1)基本語法
ssh 另外一臺電腦的ip地址
(2)ssh鏈接時出現Host key verification failed的解決方法
[root@hadoop2 opt]# ssh 192.168.1.103
The authenticity of host ‘192.168.1.103 (192.168.1.103)’ can’t be established.
RSA key fingerprint is cf:1e🇩🇪d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)?
Host key verification failed.
(3)解決方案以下:直接輸入yes
2)無密鑰配置
(1)進入到個人home目錄
cd ~/.ssh
(2)生成公鑰和私鑰:
ssh-keygen -t rsa
而後敲(三個回車),就會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
(3)將公鑰拷貝到要免密登陸的目標機器上
ssh-copy-id 192.168.1.102
(4)而後就能夠直接ssh 192.168.1.102 不須要輸入免密碼
3).ssh文件夾下的文件功能解釋
(1)~/.ssh/known_hosts :記錄ssh訪問過計算機的公鑰(public key)
(2)id_rsa :生成的私鑰
(3)id_rsa.pub :生成的公鑰
(4)authorized_keys :存放受權過得無祕登陸服務器公鑰
a訪問b 配置了免密登陸能夠免密登陸,b訪問a,必須還要再次配置才能免密登陸
rsync遠程同步工具,主要用於備份和鏡像。具備速度快、避免複製相同內容和支持符號連接的優勢。
(1)查看rsync使用說明
man rsync | more
(2)基本語法
rsync -rvl
fname
host:$pdir
命令 命令參數 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑
選項
-r 遞歸
-v 顯示覆制過程
-l 拷貝符號鏈接
(3)案例實操
把本機/opt/tmp目錄同步到hadoop103服務器的root用戶下的/opt/tmp目錄
rsync -rvl /opt/tmp/* root@hadoop103:/opt/tmp
拷貝路徑的時候,a及其c文件==>b文件c文件
a機器c文件下有d、e b機器c文件下有f、g、d
經過rsync會將b機器原來的d覆蓋掉,原來的沒丟,新加入e,最後b機器的c文件下應該是d、e、f、g,可是d是a機器d的內容
相似於scp
1)需求分析:循環複製文件到全部節點的相同目錄下。
(1)原始拷貝:
rsync -rvl /opt/module root@hadoop103:/opt/
(2)指望腳本:
xsync 要同步的文件名稱
(3)在/usr/local/bin這個目錄下存放的腳本,能夠在系統任何地方直接執行,須要制定路徑。
2)案例實操:
(1)在/usr/local/bin目錄下建立xsync文件,文件內容以下:
#!/bin/bash #1 獲取輸入參數個數,若是沒有參數,直接退出 //獲取參數個數 pcount=$# if((pcount==0)); then echo no args; //直接退出,不讓程序日後執行 exit; fi #2 獲取文件名稱 p1=$1 //basename 是爲了得到末尾的目錄,例如/opt/a 會獲得a fname=`basename $p1` echo fname=$fname #3 獲取上級目錄到絕對路徑 //dir /usr/local/bin/a.txt 獲得 /usr/local/bin //cd -P防止軟鏈接 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #4 獲取當前用戶名稱 user=`whoami` #5 循環 for((host=103; host<105; host++)); do //rsync -rvl /opt/module root@hadoop103:/opt/ //這裏循環兩次是由於例子中只有103 104 機器,具體狀況根據本身實際狀況循環 #echo $pdir/$fname $user@hadoop$host:$pdir echo --------------- hadoop$host ---------------- rsync -rvl $pdir/$fname $user@hadoop$host:$pdir done
(2)修改腳本 xsync 具備執行權限
[root@hadoop102 bin]# chmod a+x xsync
(3)調用腳本形式:xsync 文件名稱
中間可能會提示輸入密碼,輸入便可,也能夠配置下免密登陸。
1)需求分析:在全部主機上同時執行相同的命令
xcall +命令
2)具體實現
(1)在/usr/local/bin目錄下建立xcall文件,文件內容以下:
#!/bin/bash pcount=$# if((pcount==0));then echo no args; exit; fi echo -------------localhost---------- $@ for((host=101; host<=108; host++)); do echo ----------hadoop$host--------- //登陸機器後執行命令 ssh hadoop$host $@ done
(2)修改腳本 xcall 具備執行權限
[root@hadoop102 bin]# chmod a+x xcall
(3)調用腳本形式: xcall 操做命令
[root@hadoop102 ~]# xcall rm -rf /opt/tmp/profile
注意,/opt/tmp/profile 須要用絕對路徑
固然也能夠:
1)集羣部署規劃
2)配置文件
(1)core-site.xml
(hadoop/etc/hadoop)
<!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:9000</value> </property> <!-- 指定hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property>
(2)Hdfs
hadoop-env.sh
(hadoop/etc/hadoop)
export JAVA_HOME=/opt/module/jdk1.7.0_79
hdfs-site.xml
(hadoop/etc/hadoop)
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> //配置secondaryNameNode <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:50090</value> </property> </configuration>
slaves
(hadoop/etc/hadoop)
這個配置文件中不能有空格、回車等特殊字符,要求嚴格,容易報錯。
hadoop102 hadoop103 hadoop104
(3)yarn
yarn-env.sh
(hadoop/etc/hadoop)
export JAVA_HOME=/opt/module/jdk1.7.0_79
yarn-site.xml
(hadoop/etc/hadoop)
<configuration> <!-- Site specific YARN configuration properties --> <!-- reducer獲取數據的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property> </configuration>
(4)mapreduce
mapred-env.sh
(hadoop/etc/hadoop)
export JAVA_HOME=/opt/module/jdk1.7.0_79
mapred-site.xml
(hadoop/etc/hadoop)
將原來的mapred-site.xml.template修改成mapred-site.xml
而後進行修改
<configuration> <!-- 指定mr運行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
3)在集羣上分發以上全部文件
cd /opt/module/hadoop-2.7.2/etc/hadoop
xsync /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/slaves
固然能夠直接xync hadoop/
4)查看文件分發狀況
xcall cat /opt/module/hadoop-2.7.2/etc/hadoop/slaves
1)啓動集羣
(0)若是集羣是第一次啓動,須要格式化namenode
[root@hadoop102 hadoop-2.7.2]# bin/hdfs namenode -format
(1)啓動HDFS:
啓動以前須要全部節點刪除 hadoop根目錄/data 、hadoop根目錄/logs
[root@hadoop102 hadoop-2.7.2]# sbin/start-dfs.sh (在namenode執行,datanode會自動啓動)
[root@hadoop102 hadoop-2.7.2]# jps
4166 NameNode
4482 Jps
4263 DataNode
[root@hadoop103 桌面]# jps
3218 DataNode
3288 Jps
[root@hadoop104 桌面]# jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps
(2)啓動yarn
sbin/start-yarn.sh
注意:Namenode和ResourceManger若是不是同一臺機器,不能在NameNode上啓動 yarn,應該在ResouceManager所在的機器上啓動yarn。
slaves文件中配置的是datenode,每個DateNode機器上都會有一個NodeManager,因此在啓動yarn的時候,只須要啓動ResourceManger,NodeManager會根據slaves文件自動尋找有DateNode的節點自動啓動。
每次 啓動失敗都要重複一下:1.啓動以前須要全部節點刪除 hadoop根目錄/data 、hadoop根目錄/logs 2.若是集羣是第一次啓動,須要格式化namenode : bin/hdfs namenode -format
注意點:
1 必定要配置好ssh,可以ssh通,注意配置ssh的用戶是root仍是普通用戶,最好配置免密登陸
2 yarn必定要在ResourceManager上啓動
2)集羣基本測試
(1)上傳文件到集羣(NameNode節點)
查看集羣中是否有東西
hadoop fs -lsr /
上傳小文件
bin/hdfs dfs -mkdir -p /user/atguigu/tmp/conf
bin/hdfs dfs -put etc/hadoop/*-site.xml /user/atguigu/tmp/conf
-put命令:第一個參數要上傳的文件,第二個參數要上傳的位置
上傳大文件
[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -put /opt/software/hadoop-2.7.2.tar.gz /user/atguigu/input
查看是否存上去了
hadoop fs -lsr /
固然也能夠經過訪問 http://hadoop102:50070
permission 權限
owner 文件的擁有者
group 擁有者的組
size 大小
last modified 最後修改時間
replication 副本數(這裏顯示的註釋計劃的副本,不是真正的副本數,可能如今只有三個節點)
block size塊大小,hdfs是按照塊存儲的,文件很大會拆分紅不少塊
點擊後面的文件名:
能夠下載,查看目前在哪一個塊(上面的例子中若是是tar.gz文件就有兩個塊,若是是.txt文件就只顯示一個塊),塊id,塊pool id,大小
最主要的是 Availability:哪一個節點課件,即這個快屬於誰,即備份了幾份,備份到了哪幾個數據節點上,
(2)上傳文件後查看文件存放在什麼位置
cd hadoop_home/data/tmp/dfs
ll
發現有兩個文件 data、name(NameNode節點)
發現有一個文件data(DataNode節點)
發現有兩個文件data、namesecondary(secondary文件)
cd data
ll
cd current
ll
cd BP-xxxxxxxxx
ll
cd current
cd finalized
cd subdir0
cd subdir0
ll
發現這裏面存的是塊
cat blk_xxx825
輸出上面的xiaoxiong.txt中的內容
由於上面比較大的tar包分紅了兩個塊(82六、827)
因此car blk_xxx826
輸出亂碼如何將826和827進行拼接?看下面
文件存儲路徑
[atguigu@hadoop102 subdir0]$ pwd
/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0
查看文件內容
[atguigu@hadoop102 subdir0]$ cat blk_1073741825
hadoop
atguigu
atguigu
或者hadoop fs -cat /user/atguigu/input/xxx
(3)拼接
-rw-rw-r–. 1 atguigu atguigu 134217728 5月 23 16:01 blk_1073741836
-rw-rw-r–. 1 atguigu atguigu 1048583 5月 23 16:01 blk_1073741836_1012.meta
-rw-rw-r–. 1 atguigu atguigu 63439959 5月 23 16:01 blk_1073741837
-rw-rw-r–. 1 atguigu atguigu 495635 5月 23 16:01 blk_1073741837_1013.meta
mkdir tmp.file (固然這個文件的名字隨意,我也能夠叫tmp)
[atguigu@hadoop102 subdir0]$ cat blk_1073741836>>tmp.file
[atguigu@hadoop102 subdir0]$ cat blk_1073741837>>tmp.file
[atguigu@hadoop102 subdir0]$ tar -zxvf tmp.file
發現可以解壓成hadoop-2.7.2文件
(4)下載
[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -get /user/atguigu/input/hadoop-2.7.2.tar.gz
或
[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -get /user/atguigu/input/hadoop-2.7.2.tar.gz ./
3)性能測試集羣
寫海量數據
讀海量數據
1)各個服務組件逐一啓動
(1)分別啓動hdfs組件
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
暫時不用,在新加節點,中止節點的時候用
(2)啓動yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
2)各個模塊分開啓動(配置ssh是前提) 經常使用
(1)總體啓動/中止hdfs
start-dfs.sh 啓動NameNode DataNode namesecondary
stop-dfs.sh
(2)總體啓動/中止yarn
start-yarn.sh ResouceManager NodeManager
stop-yarn.sh
3)所有啓動(不建議使用)
start-all.sh
stop-all.sh
時間同步的方式:找一個機器,做爲時間服務器,全部的機器與這臺集羣時間進行定時的同步,好比,每日十分鐘,同步一次時間。
配置時間同步:
1)時間服務器配置
(1)檢查ntp是否安裝
[root@hadoop102 桌面]# rpm -qa|grep ntp
ntp-4.2.6p5-10.el6.centos.x86_64
fontpackages-filesystem-1.41-1.1.el6.noarch
ntpdate-4.2.6p5-10.el6.centos.x86_64
(2)修改ntp配置文件
vi /etc/ntp.conf
修改內容以下
a)修改1
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap爲
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
b)修改2
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst爲
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
c)添加3
server 127.127.1.0
fudge 127.127.1.0 stratum 10
3)修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
增長內容以下
SYNC_HWCLOCK=yes
4)從新啓動ntpd
[root@hadoop102 桌面]# service ntpd status
ntpd 已停
[root@hadoop102 桌面]# service ntpd start
正在啓動 ntpd: [肯定]
5)執行:
chkconfig ntpd on
2)其餘機器配置(必須root用戶)
(1)在其餘機器配置10分鐘與時間服務器同步一次
[root@hadoop103 hadoop-2.7.2]# crontab -e
編寫腳本
*/10 * * * * /usr/sbin/ntpdate hadoop102
(2)修改任意機器時間
date -s 「2015-9-11」
(3)十分鐘後查看機器是否與時間服務器同步
date
1)防火牆沒關閉、或者沒有啓動yarn
報錯以下:
INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
2)主機名稱配置錯誤
3)ip地址配置錯誤
4)ssh沒有配置好
xsync腳本用root用戶,啓動集羣最好用非root用戶
5)root用戶和atguigu兩個用戶啓動集羣不統一
6)配置文件修改不細心
最好直接複製粘貼
7)未編譯源碼
Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
不兼容,好比hadoop下載的64位,但是機器是32位
17/05/22 15:38:58 INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
8)datanode不被namenode識別問題
Namenode在format初始化的時候會造成兩個標識,blockPoolId和clusterId。新的datanode加入時,會獲取這兩個標識做爲本身工做目錄中的標識。
一旦namenode從新format後,namenode的身份標識已變,而datanode若是依然持有原來的id,就不會被namenode識別。
解決辦法,刪除datanode節點中的數據後,再次從新格式化namenode。
9)不識別主機名稱
解決辦法:
(1)在/etc/hosts文件中添加192.168.1.102 hadoop102
(2)主機名稱不要起hadoop hadoop000等特殊名稱
10)datanode和namenode進程同時只能工做一個。
11)執行命令 不生效,粘貼word中命令時,遇到-和長–沒區分開。致使命令失效
解決辦法:儘可能不要粘貼word中代碼。
12)jps發現進程已經沒有,可是從新啓動集羣,提示進程已經開啓。緣由是在linux的根目錄下/tmp目錄中存在啓動的進程臨時文件,將集羣相關進程刪除掉,再從新啓動集羣。
1)CentOS聯網
[root@hadoop101 桌面]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
[root@hadoop101 桌面]# service network restart
注意:採用root角色編譯,減小文件夾權限出現問題
2)jar包準備(hadoop源碼、JDK7 、 maven、 ant 、protobuf)
(1)hadoop-2.7.2-src.tar.gz
(2)jdk-7u79-linux-x64.gz
(3)apache-ant-1.9.9-bin.tar.gz
(4)apache-maven-3.0.5-bin.tar.gz
(5)protobuf-2.5.0.tar.gz
0)注意:全部操做必須在root用戶下完成
1)JDK解壓、配置環境變量 JAVA_HOME和PATH,驗證java-version(以下都須要驗證是否配置成功)
[root@hadoop101 software] # tar -zxf jdk-7u79-linux-x64.gz -C /opt/module/
[root@hadoop101 software]# vi /etc/profile
[root@hadoop101 software]#source /etc/profile
驗證命令:java -version
2)Maven解壓、配置 MAVEN_HOME和PATH。
[root@hadoop101 software]# tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /opt/module/
[root@hadoop101 apache-maven-3.0.5]# vi /etc/profile
[root@hadoop101 software]#source /etc/profile
驗證命令:mvn -version
3)ant解壓、配置 ANT _HOME和PATH。
[root@hadoop101 software]# tar -zxvf apache-ant-1.9.9-bin.tar.gz -C /opt/module/
[root@hadoop101 apache-ant-1.9.9]# vi /etc/profile
[root@hadoop101 software]#source /etc/profile
驗證命令:ant -version
4)安裝 glibc-headers 和 g++ 命令以下:
[root@hadoop101 apache-ant-1.9.9]# yum install glibc-headers
[root@hadoop101 apache-ant-1.9.9]# yum install gcc-c++
5)安裝make和cmake
[root@hadoop101 apache-ant-1.9.9]# yum install make
[root@hadoop101 apache-ant-1.9.9]# yum install cmake
6)解壓protobuf ,進入到解壓後protobuf主目錄,/opt/module/protobuf-2.5.0
而後相繼執行命令:
[root@hadoop101 software]# tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/
[root@hadoop101 opt]# cd /opt/module/protobuf-2.5.0/
[root@hadoop101 protobuf-2.5.0]#./configure
[root@hadoop101 protobuf-2.5.0]# make
[root@hadoop101 protobuf-2.5.0]# make check
[root@hadoop101 protobuf-2.5.0]# make install
[root@hadoop101 protobuf-2.5.0]# ldconfig
[root@hadoop101 hadoop-dist]# vi /etc/profile
[root@hadoop101 software]#source /etc/profile
驗證命令:protoc --version
7)安裝openssl庫
[root@hadoop101 software]#yum install openssl-devel
8)安裝 ncurses-devel庫:
[root@hadoop101 software]#yum install ncurses-devel
到此,編譯工具安裝基本完成。
1)解壓源碼到/opt/tools目錄
[root@hadoop101 software]# tar -zxvf hadoop-2.7.2-src.tar.gz -C /opt/
2)進入到hadoop源碼主目錄
[root@hadoop101 hadoop-2.7.2-src]# pwd
/opt/hadoop-2.7.2-src
3)經過maven執行編譯命令
[root@hadoop101 hadoop-2.7.2-src]#mvn package -Pdist,native -DskipTests -Dtar
等待時間30分鐘左右,最終成功是所有SUCCESS。
4)成功的64位hadoop包在/opt/hadoop-2.7.2-src/hadoop-dist/target下。
[root@hadoop101 target]# pwd
/opt/hadoop-2.7.2-src/hadoop-dist/target
1)MAVEN install時候JVM內存溢出
處理方式:在環境配置文件和maven的執行文件都可調整MAVEN_OPT的heap大小。(詳情查閱MAVEN 編譯 JVM調優問題,如:http://outofmemory.cn/code-snippet/12652/maven-outofmemoryerror-method)
2)編譯期間maven報錯。可能網絡阻塞問題致使依賴庫下載不完整致使,屢次執行命令(一次經過比較難):
[root@hadoop101 hadoop-2.7.2-src]#mvn package -Pdist,native -DskipTests -Dtar
3)報ant、protobuf等錯誤,插件下載未完整或者插件版本問題,最開始連接有較多特殊狀況,同時推薦
2.7.0版本的問題彙總帖子 http://www.tuicool.com/articles/IBn63qf