好程式設計師大資料分享Hadoop2.X的環境配置與執行官方案例
一、安裝之前的準備
1.1 修改主機名稱
進入 Linux 系統檢視本機的主機名。透過 hostname 命令檢視。
[root@localhost ~]# hostname
localhost.localdomain
如果此時需要修改主機名則可以按照如下的方式進行修改
範例一:臨時修改主機名稱為 Hadoop01 hostname hadoop01 重啟之後失效
範例二:永久修改主機名稱為 Hadoop01
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop01
在修改完主機名稱之後,需要編輯 /etc/hosts 檔案需要把主機名稱與IP地址進行對映
vi /etc/hosts
在該檔案下新增如下內容
192.168.1.128 hadoop01 #
地址是自己主機名稱的
ip
1.2 關閉防火牆
1)service iptables stop 關閉防火牆
2)chkconfig iptables off 永久關閉防火牆啟動
3)chkconfig iptables --list 檢視防火牆開機啟動狀態
1.3 規劃軟體安裝目錄
1)建立安裝包的儲存目錄,以及安裝目錄
mkdir -p /opt/software 儲存軟體的安裝包
mkdir -p /opt/app 軟體的安裝路徑
1.4 建立 Hadoop 使用者,以及賦予 sudo 許可權
1)建立Hadoop使用者,以後的操作都是在hadoop使用者下完成的
useradd hadoop 建立hadoop使用者
passwd hadoop 為hadoop使用者設定密碼
2)為hadoop使用者賦予sudo許可權
在 root使用者下,執行visudo命令編輯如下內容
Allow root to run any commands anywhere root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL 為hadoop使用者設定sudo許可權
Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL hadoop ALL=(ALL) NOPASSWD: ALL. 為hadoop使用者設定免密碼sudo許可權
1.5 安裝 JDK 環境
首先先把 jdk的安裝包上傳到software 資料夾下,之後對其安裝
1)解壓 sudo tar -zvxf jdk-8u181-linux-x64.tar.gz
2)配置JDK環境變數
首先獲取 JDK的安裝路徑
[hadoop@hadoop01 jdk1.8.0_181]$ pwd
/opt/soft/jdk1.8.0_181
接下來開啟 /etc/profile 檔案進行環境變數的設定
vi /etc/profile
在 profie 檔案末尾新增 jdk 路徑:
#JAVA_HOME
export JAVA_HOME=/data/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
儲存後推出 : wq
完成以上的操作之後,配置檔案並不能立即生效,需要使用到如下命令,使配置檔案立即生效
[hadoop@hadoop01 jdk1.8.0_181]$ source /etc/profile
之後測試 JDK環境變數是否配置成功,使用如下命令輸出JDK的版本資訊
[hadoop@hadoop01 jdk1.8.0_181]$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
如果能看到如上的資訊,說明 JDK的環境變數已經配置成功
1.6 安裝 Hadoop 環境
1)進入到軟體包的安裝路徑下:
[hadoop@hadoop01 /]$ cd /opt/soft/
對 hadoop安裝包進行解壓
[hadoop@hadoop01 soft]$ sudo tar -zvxf hadoop-2.7.2.tar.gz
解壓成功之後, hadoop的安裝目錄結構如下:
bin:Hadoop最基本的管理指令碼和使用指令碼所在目錄,這些指令碼是sbin目錄下管理指令碼的基礎實現,使用者可以直接使用這些指令碼管理和使用hadoop
etc:Hadoop配置檔案所在目錄,包括core-site.xml, hdfs-site.xml, mapred-site.xml等從hadoop1.0繼承而來的配置檔案和yarn-site.xml等hadoop 2.0新增的配置檔案
include:對外提供的程式設計酷標頭檔案(具體動態庫和靜態庫在lib目錄中),這些標頭檔案均是用c++定義的,通常用於c++程式訪問hdfs或者編寫mapreduce程式
lib:該目錄包含了Hadoop對外提供的的程式設計動態庫和靜態庫,與include目錄中的標頭檔案結合使用。
libexec:各個服務對應的shell配置檔案所在目錄,可用於配置日誌輸出目錄,啟動引數(比如JVM引數)等基本資訊。
sbin:Hadoop管理指令碼所在目錄,主要包含HDFS和YARN中各類服務的啟動/關閉指令碼
share:Hadoop各個模組編譯後的jar包所在目錄
2) 配置hadoop環境
hadoop需要我們配置的相關檔案都存放在$HADOOP_HOME/etc/hadoop目錄下面,首先進入到該目錄
[hadoop@hadoop01 hadoop]$ cd etc/hadoop/
進入到該目錄之後使用 ls 命令檢視該目錄下的檔案資訊
-rw-r--r--. 1 root root 4436 May 22 2017 capacity-scheduler.xml
-rw-r--r--. 1 root root 1335 May 22 2017 configuration.xsl
-rw-r--r--. 1 root root 318 May 22 2017 container-executor.cfg
-rw-r--r--. 1 root root 774 May 22 2017 core-site.xml
-rw-r--r--. 1 root root 3670 May 22 2017 hadoop-env.cmd
-rw-r--r--. 1 root root 4224 May 22 2017 hadoop-env.sh
-rw-r--r--. 1 root root 2598 May 22 2017 hadoop-metrics2.properties
-rw-r--r--. 1 root root 2490 May 22 2017 hadoop-metrics.properties
-rw-r--r--. 1 root root 9683 May 22 2017 hadoop-policy.xml
-rw-r--r--. 1 root root 775 May 22 2017 hdfs-site.xml
-rw-r--r--. 1 root root 1449 May 22 2017 httpfs-env.sh
-rw-r--r--. 1 root root 1657 May 22 2017 httpfs-log4j.properties
-rw-r--r--. 1 root root 21 May 22 2017 httpfs-signature.secret
-rw-r--r--. 1 root root 620 May 22 2017 httpfs-site.xml
-rw-r--r--. 1 root root 3518 May 22 2017 kms-acls.xml
-rw-r--r--. 1 root root 1527 May 22 2017 kms-env.sh
-rw-r--r--. 1 root root 1631 May 22 2017 kms-log4j.properties
-rw-r--r--. 1 root root 5511 May 22 2017 kms-site.xml
-rw-r--r--. 1 root root 11237 May 22 2017 log4j.properties
-rw-r--r--. 1 root root 951 May 22 2017 mapred-env.cmd
-rw-r--r--. 1 root root 1383 May 22 2017 mapred-env.sh
-rw-r--r--. 1 root root 4113 May 22 2017 mapred-queues.xml.template
-rw-r--r--. 1 root root 758 May 22 2017 mapred-site.xml.template
-rw-r--r--. 1 root root 10 May 22 2017 slaves
-rw-r--r--. 1 root root 2316 May 22 2017 ssl-client.xml.example
-rw-r--r--. 1 root root 2268 May 22 2017 ssl-server.xml.example
-rw-r--r--. 1 root root 2250 May 22 2017 yarn-env.cmd
-rw-r--r--. 1 root root 4567 May 22 2017 yarn-env.sh
-rw-r--r--. 1 root root 690 May 22 2017 yarn-site.xml
我們首先可以發現,這些檔案目前的許可權都是基於 root使用者的,但是我們現在使用的是hadoop使用者,hadoop使用者並沒有這些檔案的許可權,所以首先需要修改許可權
使用 chown 命令修改使用者與使用者組許可權
sudo chown -R hadoop:hadoop /opt/soft/hadoop-2.7.2/
修改完成之後再次使用 ls命令檢視檔案,檢視是否修改成功 [hadoop@hadoop01 hadoop]$ ll
-rw-r--r--. 1 hadoop hadoop 4436 May 22 2017 capacity-scheduler.xml
-rw-r--r--. 1 hadoop hadoop 1335 May 22 2017 configuration.xsl
-rw-r--r--. 1 hadoop hadoop 318 May 22 2017 container-executor.cfg
-rw-r--r--. 1 hadoop hadoop 774 May 22 2017 core-site.xml
-rw-r--r--. 1 hadoop hadoop 3670 May 22 2017 hadoop-env.cmd
-rw-r--r--. 1 hadoop hadoop 4224 May 22 2017 hadoop-env.sh
-rw-r--r--. 1 hadoop hadoop 2598 May 22 2017 hadoop-metrics2.properties
-rw-r--r--. 1 hadoop hadoop 2490 May 22 2017 hadoop-metrics.properties
-rw-r--r--. 1 hadoop hadoop 9683 May 22 2017 hadoop-policy.xml
-rw-r--r--. 1 hadoop hadoop 775 May 22 2017 hdfs-site.xml
-rw-r--r--. 1 hadoop hadoop 1449 May 22 2017 httpfs-env.sh
-rw-r--r--. 1 hadoop hadoop 1657 May 22 2017 httpfs-log4j.properties
-rw-r--r--. 1 hadoop hadoop 21 May 22 2017 httpfs-signature.secret
-rw-r--r--. 1 hadoop hadoop 620 May 22 2017 httpfs-site.xml
-rw-r--r--. 1 hadoop hadoop 3518 May 22 2017 kms-acls.xml
-rw-r--r--. 1 hadoop hadoop 1527 May 22 2017 kms-env.sh
-rw-r--r--. 1 hadoop hadoop 1631 May 22 2017 kms-log4j.properties
-rw-r--r--. 1 hadoop hadoop 5511 May 22 2017 kms-site.xml
-rw-r--r--. 1 hadoop hadoop 11237 May 22 2017 log4j.properties
-rw-r--r--. 1 hadoop hadoop 951 May 22 2017 mapred-env.cmd
-rw-r--r--. 1 hadoop hadoop 1383 May 22 2017 mapred-env.sh
-rw-r--r--. 1 hadoop hadoop 4113 May 22 2017 mapred-queues.xml.template
-rw-r--r--. 1 hadoop hadoop 758 May 22 2017 mapred-site.xml.template
-rw-r--r--. 1 hadoop hadoop 10 May 22 2017 slaves
-rw-r--r--. 1 hadoop hadoop 2316 May 22 2017 ssl-client.xml.example
-rw-r--r--. 1 hadoop hadoop 2268 May 22 2017 ssl-server.xml.example
-rw-r--r--. 1 hadoop hadoop 2250 May 22 2017 yarn-env.cmd
-rw-r--r--. 1 hadoop hadoop 4567 May 22 2017 yarn-env.sh
-rw-r--r--. 1 hadoop hadoop 690 May 22 2017 yarn-site.xml
透過再次檢視我們發現,現在的許可權已經全部修改為 hadoop ,這樣我們就可以在hadoop使用者下對這些檔案進行操作了
完成了以上的配置之後,我們接下來首先需要配置如下檔案
hadoop-env.sh: 用於hadoop的環境變數配置檔案
#The java implementation to use.
export JAVA_HOME=/opt/soft/jdk1.8.0_181
在該配置檔案中,找到如上內容,並且修改 JAVA_HOME 為自己的JDK路徑 配置完成之後,可以在hadoop根路徑下,輸入如下命令
bin/hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
CLASSNAME run the class named CLASSNAME
or
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jar <jar> run a jar file
note: please use "yarn jar" to launch
YARN applications, not this command.
checknative [-a|-h] check native hadoop and compression libraries availability
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath prints the class path needed to get the
credential interact with credential providers
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
trace view and modify Hadoop tracing settings
Most commands print help when invoked w/o parameters.
如果能看到如上的資訊,說明基本的執行環境已經搭建完成了
二、 Hadoop 執行模式
Hadoop的執行模式,分為以下幾種:
1) 本地模式(預設模式)
不需要啟用單獨程式,直接可以執行,測試和開發時使用。
2)偽分佈模式
等同於完全分散式,只有一個節點。
3)完全分散式模式
多個節點一起執行。
2.1 本地執行 Hadoop 官方案例 Grep
對於這個案例來說,主要的作用就是,在一堆檔案中與規定的正規表示式進行匹配,把匹配成功的單詞出現的次數,進行統計
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
$ cat output/*
以上為官網上給出的案例程式碼
從以上的案例程式碼可以得出,首先需要建立一個目錄,用於存放需要統計的檔案,而對於統計結果的儲存目錄則不用以前建立,注意: Hadoop中輸出結果的目錄是不能提前存在的
範例:執行 grep案例
1)在hadoop根目錄下建立一個資料夾input
[hadoop@hadoop01 hadoop-2.7.2]$ mkdir input
2) 將hadoop的xml配置檔案複製到input
[hadoop@hadoop01 hadoop-2.7.2]$ cp etc/hadoop/*.xml input/
3) 執行share目錄下的mapreduce程式
[hadoop@hadoop01 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
4) 檢視輸出結果
[hadoop@hadoop01 hadoop-2.7.2]$ cat output/*
1 dfsadmin
2.2 執行官方 wordcount 案例
1) 在hadoop根目錄中建立用於儲存統計檔案的wcinput目錄
[hadoop@hadoop01 hadoop-2.7.2]$ mkdir wcinput
2) 在 wcinput 檔案下建立一個 wordcount.txt 檔案
[hadoop@hadoop01 wcinput]$ vi worldcount.txt
hello java world input
hadoop hive zookeeper java
world input hello hadoop
hbase zookeeper sqoop
3) 執行wordcount案例程式
[hadoop@hadoop01 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
4) 檢視結果
[hadoop@hadoop01 hadoop-2.7.2]$ cat wcoutput/part-r-00000
hadoop 2
hbase 1
hello 2
hive 1
input 2
java 2
sqoop 1
world 2
zookeeper 2
透過以上的方式,就可以完成 Hadoop的最基本的環境搭建,以及執行Hadoop的一些案例
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2643812/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料學習路線分享大資料之執行緒程式設計師大資料執行緒
- 好程式設計師大資料學習路線分享hive的執行方式程式設計師大資料Hive
- 好程式設計師分享大資料教程之執行緒高階部分程式設計師大資料執行緒
- 好程式設計師Java培訓分享jdk安裝與環境變數配置程式設計師JavaJDK變數
- 好程式設計師大資料培訓分享大資料的應用程式設計師大資料
- 好程式設計師Python培訓分享Python配置gRPC環境程式設計師PythonRPC
- 大資料執行環境的執行大資料
- 好程式設計師分享大資料三大必備技能程式設計師大資料
- 好程式設計師大資料培訓分享大資料的影響一程式設計師大資料
- 好程式設計師大資料培訓分享MapReduce理解程式設計師大資料
- 好程式設計師大資料培訓分享大資料還學嗎?程式設計師大資料
- 好程式設計師大資料教程分享大資料之流程控制程式設計師大資料
- 好程式設計師大資料學習路線分享執行緒學習筆記二程式設計師大資料執行緒筆記
- 好程式設計師大資料學習路線分享多執行緒學習筆記程式設計師大資料執行緒筆記
- 好程式設計師大資料教程分享實用的大資料之陣列程式設計師大資料陣列
- 好程式設計師大資料培訓分享如何區分Hive與HBase程式設計師大資料Hive
- 好程式設計師大資料培訓分享mysql資料型別程式設計師大資料MySql資料型別
- 好程式設計師大資料培訓分享大資料兩大核心技術程式設計師大資料
- 好程式設計師大資料培訓分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- 好程式設計師分享自學大資料入門乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師大資料教程分享:HDFS基本概念程式設計師大資料
- 好程式設計師大資料培訓分享大資料面試寶典一程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典二程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典三程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典四程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典六程式設計師大資料面試
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料培訓分享怎樣進行大資料入門學習程式設計師大資料
- 好程式設計師大資料技術分享:Zookeeper叢集管理與選舉程式設計師大資料
- 好程式設計師大資料技術分享Zookeeper叢集管理與選舉程式設計師大資料
- 好程式設計師大資料培訓分享大資料就業方向有哪些?程式設計師大資料就業
- 好程式設計師大資料教程分享Scala系列之閉包程式設計師大資料
- 好程式設計師大資料分享Scala系列之柯里化程式設計師大資料
- 好程式設計師大資料分享Shell中陣列講解程式設計師大資料陣列
- 好程式設計師大資料學習路線分享Hadoop階段的高可用配置程式設計師大資料Hadoop