hadoop_spark偽分布式實驗環境搭建和運行實例詳細教程


hadoop+spark偽分布式環境搭建

安裝須知

  • 單機模式(standalone):
  • 該模式是Hadoop的默認模式。這種模式在一台單機上運行,沒有分布式文件系統,而是直接讀寫本地操作系統的文件系統。
  • 偽分布模式(Pseudo-Distributed Mode
  • 這種模式也是在一台單機上運行,但用不同的Java進程模仿分布式運行中的各類結點,其中所有的守護進程都運行在同一台機器上。
  • 全分布模式(Fully Distributed Mode
    Hadoop守護進程運行在一個集群上,一台主機也可以運行完全分布式,需要安裝多個獨立的linux鏡像,配置不同IP

需要的軟件及版本

軟件

版本

Java編程語言(JDK8)

1.8.0_161

操作系統:LinuxCentOS

6.4

操作系統:Windows

Windows7/8/10

Apache Hadoop

2.7.5

Apache Spark

2.3.0

Apache Maven

3.5.2

LinuxCentOS:Eclipse IDE

eclipse-jee-luna-SR2-linux-gtk

Windows下:Eclipse IDE

eclipse-jee-oxygen-2-win32-x86_64

安裝步驟大綱

1./軟件准備(虛擬一台主機)

2.安裝linux操作系統

3.准備網絡連接

4.linux系統的一些配置

5.安裝JDK

6.安裝Hadoop

7.安裝Scala+Spark

8)安裝eclipsemaven

9)運行wordcount例子程序

1./軟件准備

  • 第一步:硬/軟件准備(虛擬一台主機)
  • 1)物理主機一台,CPU必須支持虛擬化功能(主流機大部分支持,如果被禁止可以在BIOS設置項里面設置開啟),內存最好4G及以上,安裝虛擬機的硬盤至少要留出20G空間。
  • 2)上述所有需求版本軟件,由於我們的CentOS32位,所以這些軟件最好下載32位的linux版本的壓縮包
  • 3SecureCRTPortable(遠程終端)
  • VMware Workstation Pro(虛擬機)
  • filezillawindowslinux之間文件傳輸)

 

2.安裝linux操作系統

(1)安裝VM虛擬機,安裝完畢后打開准備好的CentOS鏡像(本教程以CentOS6.4為例子,6.x與7.x差別不大)

   (2)   設置虛擬機的內存,處理器,硬盤和網絡適配器,本教程設置如下:   內存:2GB

          處理器:處理器數量1,內核數量1(根據個人機器配置適當調整)

          硬盤:20GB

重點  網絡適配器設置:自定義 VMnet8(NAT模式)

 

3.准備網絡連接

(1)設置VM虛擬機的”虛擬網卡”的信息

 在VM選項中點擊  編輯(Edit)->虛擬網絡編輯器(Virtual NetWork Editor)->選擇Vmnet8 NAT模式 ,先配置子網IP,再配置子網掩碼,最后設置NAT設置 (NAT setting ),配置完點擊應用(apply),會在windows下的網絡和共享下適配器管理中產生一個VMnet8的虛擬網卡。

具體配置參考如下:

  Subnet IP:192.168.2.0 (可調整)

  子網掩碼:255.255.255.0

 NAT setting->Gateway IP 改為:192.168.2.1(可調整)

(2)設置物理主機生成的虛擬網卡的信息

打開網絡和共享中心,網絡適配器,選擇新生成的VMnet8,設置IP地址 192.168.2.2(也可以根據情況調整)

(3)開啟此虛擬機並選擇I  have moved it,這樣將不會重新生成虛擬網卡,  原來對虛擬機的配置不會浪費

(也可以根據情況調整,但要保證物理主 機生成的虛擬網卡,虛擬主 機虛擬網卡,CentOS的IP在同一網段中,即都配置為192.168.2.X   

 

4.linux系統的一些配置

(1)登陸虛擬機,初始用戶名及密碼為hadoop(hadoop)

(2)查看ip地址,在控制台輸入命令ifconfig查看本機的IP

          $ifconfig

(3)修改ip地址的方式

第一種:命令行輸入 $setup,進入偽圖形界面,輸入密碼hadoop進入並選擇NetWork configuration ,然后根據提示進行修改,具體如下

Static IP :192.168.2.100

gateWay IP:192.168.2.1

DNS Server:8.8.8.8

保存並退出 (推薦使用這種方式,簡單不容易出錯)                             

第二種:修改配置文件方式(需要簡單linux使用基礎,關於vi編輯器操作指令,不太推薦,了解就好)

輸入以下指令並修改IP,:wq保存並退出

$vim  /etc/sysconfig/network-scripts/ifcfg-eth0

 

 

 

DEVICE="eth0"

BOOTPROTO="static"               

HWADDR="00:0C:29:3C:BF:E7"

IPV6INIT="yes"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Ethernet"

UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"

IPADDR=“192.168.2.100”     (一般只修改這個就可以了)      

NETMASK="255.255.255.0"          

GATEWAY="192.168.2.1"            

4)重啟網絡設置,使新配置生效

進入管理員用戶重啟網絡設置,命令如下:

$su

輸入密碼:hadoop       進入root用戶,輸入以下指令,使新網絡配置生效

$service network restart

最后用ping命令檢測是否連通

$ping 192.168.2.2

$ping 192.168.2.1

 $ping www.baidu.com(如果連接到網絡就能ping通)

 

Ctrl +Z(掛起進程)和Ctrl+C(強制中斷)都可終止程序運行

(5)讓普通用戶具備sudo執行權限(root用戶即管理員用戶具有某些配置文件的權限,一般用戶沒有,需要root用戶賦予,或者使用sudo命令)

 切換到root用戶,輸入$su,然后輸入密碼,進入root用戶,然后輸入以下命令   $vi   /etc/sudoers, 在打開的文件里,找到

##allow root to run any commands anywhere

root  ALL=(ALL)   ALL

在這個地方添加一行:hadoop  ALL=(ALL)   ALL

然后保存並退出(記得改完退出root用戶,不建議在root用戶下操作)

(6)修改系統配置文件,設置啟動項,讓虛擬機以后默認以命令行模式啟動,輸入以下命令:

$sudo vi   /etc/inittab

修改id后面的數字,改為3,多用戶模式,默認虛擬機以多用戶命令行模式啟動

(7)利用軟件SecureCRT遠程終端連接虛擬機,點擊Quick Connect,輸入如下:

protocol:SSH2

hostname:虛擬機ip地址 192.168.2.100(舉例)

port:22

username:hadoop

選擇accept&save ,然后就可以在遠程終端操控虛擬機,比較方便快捷

用戶密碼都是hadoop

(8)修改默認主機名

進入hadoop用戶,然后輸入命令

$sudo vi /etc/sysconfig/network

然后修改HOSTNAME=bigdata(設置自己認為有意義的名字即可)

然后輸入命令$sudo hostname立刻生效

* 如果是分布式多節點最好設置為host01(序列)

(9)修改hosts文件,把IP地址與主機名對應(重要),輸入命令:

$sudo vi /etc/hosts

然后把自己的IP與主機名添加到最后一行,如

192.168.2.100      bigdata

保存並退出

可以$ping  bigdata測試

至此,linux基本環境配置成功,接下來安裝軟件

5.安裝JDK

在linux系統下安裝一個軟件的步驟大致是這樣的:

一.把安裝包從本地主機上傳到linux主目錄下

二.解壓安裝包到指定路徑(建議自己在主目錄下定義)

三.根據軟件安裝位置修改系統環境變量,並使它生效

四.修改軟件相關配置文件,並測試是否成功

下面開始JDK的安裝:

1.把安裝包從本地主機上傳到linux主目錄下

兩種方式

(a)利用軟件FileZilla(在本地與虛擬機之間傳文件的助手)

打開FileZilla,輸入主機名,用戶名,密碼和端口號

192.168.2.100  hadoop  hadoop  22       然后快速連接(quick connect)

這時在左側顯示的是本地主機目錄,右側顯示的是虛擬主機目錄

只需要在左側找到安裝包拖動到右側目錄下,最好拖到根目錄下或者根目錄下指定的安裝包文件下(強烈推薦!!!)

(b)在遠程終端secureCRT中,使用快捷鍵Alt+p打開一個sftp,使用命令行把文件傳到虛擬機主目錄下,命令如下

put d:\xxx\yy\ll\jdk-7u65-linux-i585.tar.gz(自己的壓縮包路徑/名字)

2.解壓安裝包到指定路徑

#創建文件夾

$mkdir /home/hadoop/app

#解壓

$tar –zxvf   jdk-7u55-linux-i586.tar.gz  -C  /home/hadoop/app

3.根據軟件安裝位置修改系統環境變量,並使它生效

#java添加到環境變量中

$sudo  vim /etc/profile

#在文件最后添加

export JAVA_HOME=/home/hadoop/app/jdk1.7.0-65

export PATH=$PATH:$JAVA_HOME/bin     

#刷新配置

$source /etc/profile

4.修改軟件相關配置文件,測試是否成功

最后在命令行輸入$java -version ,如果出現版本號既安裝成功

注意:具體路徑設置以自己的配置為准,不要死搬硬套,靈活設置

6.安裝Hadoop

(1)下面開始Hadoop的安裝:(參考JDK安裝過程)

         先上傳hadoop的安裝包到服務器上去/home/hadoop/(兩種方式)

         #解壓

         tar -zxvf hadoop-2.4.1.tar.gz  -C  /home/hadoop/app

         偽分布式需要修改5個配置文件

第一個:hadoop-env.sh                              $cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

       $vim hadoop-env.sh

#新加第27

export JAVA_HOME=/home/app/jdk1.7.0_65

第二個:core-site.xml

         <!-- 指定HADOOP所使用的文件系統schemaURI),HDFS的老大(NameNode)的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://bigdata:9000</value>

</property>

<!-- 指定hadoop運行時產生文件的存儲目錄 -->

<property>

<name>hadoop.tmp.dir</name>    

                <value>        /home/hadoop/app/hadoop2.4.1/hdfs_tmp</value>

                               </property>

第三個:hdfs-site.xml

        <!-- 指定HDFS副本的數量 -->

   <property>

<name>dfs.replication</name>

<value>1</value>

           </property>

第四個:mapred-site.xml

<!-- 指定mr運行在yarn-->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

第五個:yarn-site.xml

<!-- 指定YARN的老大(ResourceManager)的地址 -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>bigdata</value>

</property>

<!-- reducer獲取數據的方式 -->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

(2)hadoop添加到環境變量

$vim /etc/proflie

export JAVA_HOME=/home/app/java/jdk1.7.0_65

export HADOOP_HOME=/home/app/hadoop-2.4.1

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

刷新配置文件,使配置生效

$source /etc/profile

7.安裝Scala

根據jdk和hadoop的安裝經驗,按照四個步驟,完成安裝

下載Scala2.10.4,並按照前面的方式上傳到linux目錄下並解壓

添加環境變量

$sudo vi /etc/profile

#scala

export SCALA_HOME=/home/app/scala  (根據具體情況修改)

export PATH=$SCALA_HOME/bin:$PATH

$source /etc/profile

#測試是否安裝成功

$scala -version

(2)安裝Spark(按照自己的安裝路徑和版本文件名等配置,不要照着敲)

根據jdk和hadoop的安裝經驗,按照四個步驟,完成安裝

按照前面的方式上傳到linux目錄下並解壓

添加環境變量

$sudo vi /etc/profile

#spark

export SPARK_HOME=/home/hadoop/app/spark-2.3.0-bin-hadoop2.4

export PATH=$SPARK_HOME/bin:$PATH

$source /etc/profile

#測試是否安裝成功

$spark-shell

#修改conf目錄下的spark-env.sh,添加環境變量

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SPARK_HOME=/home/hadoop/app/spark

export SPARK_JAR=/home/hadoop/app/spark/lib/spark-assembly-2.3.0-hadoop2.4.0.jar

export PATH=$SPARK_HOME/bin:$PATH

8.安裝eclipse+maven

在linux系統下安裝一個軟件的步驟大致是這樣的:

一.把安裝包從本地主機上傳到linux主目錄下

二.解壓安裝包到指定路徑(建議自己在主目錄下定義)

三.根據軟件安裝位置修改系統環境變量,並使它生效

四.修改軟件相關配置文件,並測試是否成功

和安裝前面這些軟件一樣,安裝eclipse和maven同樣是把安裝包上傳到linux主目錄,然后解壓到指定文件夾,修改環境變量,把軟件安裝位置添加到環境變量,如果需要修改配置文件就修改,不需要就可以不用修改。最后測試是否成功,這兩個都不用修改配置文件。

9.運行wordcount例子

#格式化namenode(是對namenode進行初始化)

$hdfs namenode -format (hadoop namenode -format)

#進入hadoop

$cd  /home/hadoop/app/hadoop-2.4.1/sbin

       #先啟動HDFS

       $./start-dfs.sh

       #再啟動YARN

       $./start-yarn.sh

#驗證是否啟動成功

使用jps命令驗證            $jps

#啟動Spark

$ cd  /home/hadoop/app/spark-1.1.0-bin-hadoop2.4/sbin

$ ./start-all.sh

#驗證是否啟動成功

使用jps命令驗證           

$jps

啟動成功輸入jps后會出現下面的進程:

1.namenode

2.secondnamenode

3.datanode

4.nodemanager

5.Resourcemanager

還可以添加免密認證,然后編寫腳本一鍵執行啟動所有進程

出現這些進程就可以開始運行簡單的程序了,我們從wordcount開始示范,必須深入學習之后才能明白每一步和每一個進程代表的含義,目前只是搭建了一個能運行最簡單的程序的環境,實際應用中還有很多待解決問題,有待深入學習。

首先了解簡單的在分布式文件系統HDFS操作的命令

HDFS shell

1.0查看幫助

hadoop fs -help <cmd>

1.1上傳

hadoop fs -put <linux上文件> <hdfs上的路徑>

1.2查看文件內容

hadoop fs -cat <hdfs上的路徑>

1.3查看文件列表

hadoop fs -ls /

1.4下載文件

hadoop fs -get <hdfs上的路徑> <linux上文件>

Hadoop運行wordcount例子

$ cd /home/hadoop/app/hadoop-2.4.1/share/hadoop/mapreduce

$ vi test.txt

輸入以下字符串:

hello world

hello tom

hello jim

hello kitty

hello angelababy

在web瀏覽器打開http://192.168.2.100:50070

選擇Utilities-> Browse the file system就能查看hdfs系統中的文件test.txt

在hdfs根目錄下建一個文件夾

$hadoop fs -mkdir /wordcount

$hadoop fs -mkdir /wordcount/input

然后使用hdfs的上傳指令

$hadoop fs -put test.txt /wordcount/input

然后可以在web端找到對應的路徑和文件

 

接着就開始從最簡單的wordcount例子開始

大數據技術-WordCount例子分別在hadoopspark運行的具體教程

 

基於HadoopMapReduce框架下的WordCount運行示例

第一步:在eclipse中編寫程序

(1) 新建java工程,在新建工程下的src文件下新建包,推薦使用三段式命名法,如com.hadoop.cn,然后繼續在包下新建.java文件,開始編寫wordcount程序;

2)由於wordcount程序需要很多hadoop相關的包,所以我們在動手編寫程序之前最好先將准備好的hadoop_jar文件中的包添加到項目關聯庫中,具體操作如下:

右鍵點擊wordcount項目,選擇Build Path下的Add External Archive,然后找到我們准備好的hadoop_jar文件全選並確定。

3)按照mapreduce框架的規范編寫代碼

第二步:使用eclipsejar

程序編寫完成之后,右鍵點擊項目,選擇Export,然后選擇Java下的JAR file,然后點擊next,如圖所示,修改自己想保存jar包的位置,然后點擊finish,為了方便傳輸,可以放在桌面,傳到linux系統后再刪除。

 

第三步:發送jar包到linux系統並用命令行提交運行

利用文件傳輸工具filezilla,將桌面上的jar包傳到linux系統下,一般保存在home/app/hadoop/share/mapreduce這個文件下,也可以新建自己的文件,把jar包拖動到該文件下,測試數據可以提前上傳到hdfs/wordcount/input下,我們以test.txt為例,我們在mapreduce文件夾下的運行指令為:

基本格式:hadoop  jar  jar包名稱  主類—即main函數所在的類  輸入文件路徑 輸出文件路徑

例:hadoop jar WordCount_hadoop_test.jar cn.itcast.hadoop.mr.wordcount.WCRunner wordcount /wordcount/input  /wordcount/output   

注:寫主類的時候注意一定要寫 包名.主類名,主類的名字是你main函數所在類的名字,文件輸入路徑按照hdfs上的文件路徑名寫,輸出路徑可以自己指定,最好是項目名/output

 

基於SparkWordCount運行示例

 

第一步:在eclipse中編寫程序

(1)新建java工程,在新建工程下的src文件下新建包,推薦使用三段式命名法,如com.hadoop.cn,然后繼續在包下新建.java文件,開始編寫wordcount程序;

 

(2)由於wordcount程序需要很多spark相關的包,所以我們在動手編寫程序之前最好先將准備好的spark_jar文件中的包添加到項目關聯庫中,具體操作如下:

右鍵點擊wordcount項目,選擇Build Path下的Add External Archive,然后找到我們准備好的spark_jar文件全選並確定。

 

(3) 按照spark編碼規范編寫代碼

 

第二步:使用eclipsejar

程序編寫完成之后,右鍵點擊項目,選擇Export,然后選擇Java下的JAR file,然后點擊next,如圖所示,修改自己想保存jar包的位置,然后點擊finish,為了方便傳輸,可以放在桌面,

傳到linux系統后再刪除。

 

第三步:發送jar包到linux系統並用命令行提交運行

利用文件傳輸工具filezilla,將桌面上的jar包傳到linux系統下,一般保存在home/app/spark/examples/jars這個文件下,也可以新建自己的文件,把jar包拖動到該文件下,測試數據可以提前上傳到hdfs/wordcount/input下,我們以test.txt為例,我們在mapreduce文件夾下的運行指令為:

基本格式:spark-submit  --class  主類-main函數所在的類  jar包  輸入文件

 

spark-submit  --class  com.spark.count.JavaWordCount /home/hadoop/app/spark-2.3.0-bin-hadoop2.7/examples/jars/WordCount_spark_test.jar

/wordcount/input/test.txt

注:寫主類的時候注意一定要寫 包名.主類名,主類的名字是你main函數所在類的名字,文件輸入路徑按照hdfs上的文件路徑名寫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM