官术网_书友最值得收藏!

1.2 任務二:搭建Hadoop偽分布式環境

【任務描述】

在認知了大數據之后,我們是不是也來體驗一下Hadoop?但是我們還缺少環境條件,如果直接搭建Hadoop生產環境(高可用集群)就稍顯復雜了,不如搭建一個Hadoop偽分布式環境,這也不妨礙我們的體驗。而且搭建Hadoop偽分布式環境和搭建生產環境有很多相通之處,學習了搭建Hadoop偽分布式環境同樣有利于我們后續搭建Hadoop生產環境。

1.2.1 準備工作

搭建Hadoop偽分布式環境,需要在單個節點上進行部署。在安裝Hadoop之前,我們需要安裝Hadoop的運行環境——Linux系統,本教材中選擇安裝的是CentOS7 mini server版本。我們可以通過VMWare、VirtualBox等虛擬化軟件來創建部署所需要的虛擬機,安裝過程略。需要注意的是,在安裝時需要配置虛擬機的網卡信息,我們選擇橋接網卡,這樣虛擬機與虛擬機、虛擬機與主機之間都可以進行通信,同時也方便在虛擬機中下載安裝所需要的資源。

配置好網卡后,建議測試一下網絡環境是否存在問題,測試代碼如下:

【代碼1-1】測試網絡環境

[root@huatec01 ~]# ping baidu.com

PING baidu.com(220.181.57.217)56(84)Byte of data.

64 Byte from 220.181.57.217: icmp_seq=1 ttl=57 time=5.10 ms

64 Byte from 220.181.57.217: icmp_seq=2 ttl=57 time=4.28 ms

[root@huatec01 ~]# ping 192.168.14.103

PING 192.168.14.103(192.168.14.103)56(84)Byte of data.

64 Byte from 192.168.14.103: icmp_seq=1 ttl=64 time=0.929 ms

64 Byte from 192.168.14.103: icmp_seq=2 ttl=64 time=0.256 ms

其中,PING baidu.com用于測試外網環境,PING 192.168.14.103用于測試內部網絡環境,通過上面的代碼我們看出,測試通過了,這表明我們的虛擬機的網卡配置信息是正確的。

同時,我們還需要關閉系統的防火墻,CentOS 7默認關閉iptables,關閉fi rewalld防火墻和selinux防火墻即可,代碼如下所示:

【代碼1-2】關閉并查看fi rewalld防火墻

[root@huatec01 ~]# systemctl stop firewalld

[root@huatec01 ~]# systemctl disable firewalld

[root@huatec01 ~]# systemctl status firewalld

firewalld.service-firewalld-dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service;disabled)

Active: inactive(dead)

Oct 12 22:54:57 huatec01 systemd[1]: Stopped firewalld-dynamic

firewall daemon.

在關閉firewalld防火墻之前,需要先執行“systemctl stop firewalld”命令來停止防火墻,避免其已經處于運行狀態,導致關閉失敗,然后調用systemctl disable firewalld讓其徹底不可用。最后,執行systemctl status firewalld指令查看防火墻是否關閉成功。從上述的代碼中可以看到最后的防火墻狀態是inactive(dead),說明操作成功。

關閉selinnux防火墻,代碼如下:

【代碼1-3】關閉selinnux防火墻

[root@huatec01 ~]# vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.

# SELINUX=can take one of these three values:

#   enforcing-SELinux security policy is enforced.

#   permissive-SELinux prints warnings instead of enforcing.

#   disabled-No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE=can take one of three two values:

# targeted-Targeted processes are protected,

# minimum-Modification of targeted policy.Only selected processes are protected.

# mls-Multi Level Security protection.

SELINUXTYPE=targeted

我們修改其中的一行,將SELINUX的值改為disabled即可。從上面的注釋中可以看到SELINUX的取值有3個,分別為enforcing、permissive和disabled。enforcing表示SELINUX安全策略是強制性的;permissive表示SELINUX安全策略將會提示權限問題,輸出提示信息;disabled是直接讓其不可用。

【知識引申】

如果是CentOS 6.0,參考如下方式關閉防火墻。

第一步:關閉iptables和 ip6tables

#查看防火墻狀態

service iptables status

service ip6tables status

#關閉防火墻

service iptables stop

service ip6tables stop

#查看防火墻開機啟動狀態

chkconfig iptables list

chkconfig ip6tables--list

#關閉防火墻開機啟動

chkconfig iptables off

chkconfig ip6tables off

在生產環境中,需要為每個虛擬機設置固定的ip和主機名,即使是搭建偽分布式環境,也建議這么做。執行vim /etc/sysconfi g/network-scripts/ifcfg-eth0指令,打開ip配置文件進行編輯,編輯后的文件結果如下:

【代碼1-4】配置固定ip

[root@huatec01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3

HWADDR="08:00:27:89:86:1a"

TYPE="Ethernet"

BOOTPROTO="static"

DEFROUTE="yes"

PEERDNS="yes"

PEERROUTES="yes"

IPV4_FAILURE_FATAL="yes"

NAME="enp0s3"

UUID="1cd81753-424f-46aa-890d-9bb23f11438f"

ONBOOT="yes"

IPADDR=192.168.14.101

NETMASK=255.255.240.0

DNS=202.106.0.20

GATEWAY=192.168.0.1

其中,BOOTPROTO=“static”表明ip的獲取方式是固定ip,ONBOOT=“yes”表明開機后就應用這個配置,IPADDR=“192.168.8.101”、NETMASK=“255.255.255.0”、GATEWAY=“192.168.8.1”分別為虛擬機配置的ip、子網掩碼和默認網關信息。完成設置后,可以通過ifconfi g查看當前的ip是否設置成功,如果顯示不成功,建議重啟虛擬機后進行查看。

Mini版本的虛擬機默認沒有安裝ifconfi g指令的相關工具,請執行安裝指令:yum install net-tools*。修改主機名,操作如下所示:

【代碼1-5】修改主機名

[root@huatec01 ~]# hostnamectl set-hostname huatec01

[root@huatec01 ~]# hostname

huatec01

其中,hostnamectl set-hostname huatec01指令用于設置主機名,設置成功后,通過hostname指令查看設置是否生效。

最后,為主機名和ip配置映射關系,打開/etc/hosts文件進行編輯,在文件的末尾增加192.168.8.101 huatec01即可,編輯后的文件如下所示:

【代碼1-6】配置主機名和ip映射關系

[root@huatec01 ~]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1       localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.8.101 huatec01

Hadoop的運行需要依賴java環境,而且不同版本的Hadoop對JDK的版本要求也不同。本教材中選擇安裝的是Hadoop 2.7.3版本,它要求JDK最低版本為1.7,具體說明如圖1-4所示。

圖1-4 Hadoop Java Versions

JDK官網顯示的是最新版本下載,我們需要點擊如圖1-5所示的欄目,進入JDK歷史版本下載界面。

圖1-5 下載JDK示意

我們選擇JDK7 X64位進行下載,如圖1-6所示。

圖1-6 下載JDK示意

將本地下載的JDK安裝包上傳到服務器,執行操作如下所示:

【代碼1-7】上傳JDK

bogon:~ zhusheng$ scp /Users/zhusheng/Backup/Hadoop/JDK-7u80-linux-x64.tar root@192.168.14.101:/home/zhusheng/

root@192.168.14.101's password:

JDK-7u80-linux-x64.tar 100% 294MB 92.0MB/s 00:03

bogon:~ zhusheng$

我們在服務器端進行JDK的安裝工作,首先,新建一個JDK安裝目錄,然后將壓縮包解壓到我們的安裝目錄下,具體操作如下所示:

【代碼1-8】安裝JDK

[root@huatec01 java]# cd /usr/local

[root@huatec01 java]# mkdir java

[root@huatec01 java]# tar –xvf JDK-7u80-linux-x64.tar-C /usr/local/java/

[root@huatec01 /]# cd /usr/local/java/

[root@huatec01 java]# ls-al

total 8

drwxr-xr-x.3 root root 24 Jun 6 20:53.

drwxr-xr-x.15 root root 4096 Sep 21 23:02..

drwxr-xr-x.8 10 143 4096 Apr 10 2015 JDK1.7.0_80

解壓即可完成安裝。

【知識引申】:tar指令參數說明

z:表示gz格式的壓縮文件。

x:表示釋放,也就是解壓。

v:顯示解壓過程文件。

f:解壓到一個目錄下。

-C:指定目錄。

JDK安裝完成后,我們還需要為系統配置java環境變量,打開環境變量配置文件/etc/profi le進行編輯,在文件中增加如下代碼:

【代碼1-9】配置java環境變量

[root@huatec01 local]# vi /etc/profi le

#java

JAVA_HOME=/usr/local/java/JDK1.7.0_80

export PATH=$PATH:$JAVA_HOME/bin

執行source /etc/profi le指令來更新環境變量配置文件,最后在任意目錄執行java –version指令檢測JDK是否安裝成功以及環境變量是否成功配置。檢測java是否安裝成功的具體操作如下:

【代碼1-10】檢測java是否安裝成功

[root@huatec01 local]# java-version

java version "1.7.0_80"

Java(TM)SE Runtime Environment(build 1.7.0_80-b15)

Java HotSpot(TM)64-Bit Server VM(build 24.80-b11,mixed mode)

[root@huatec01 local]#

如上所示,表明JDK已經安裝成功!

至此,準備工作已經完成,下面將開始搭建Hadoop偽分布式環境。

1.2.2 搭建偽分布式環境

Hadoop偽分布式環境就是在一個節點上安裝Hadoop,它包含了HDFS和基于Yarn架構的MapReduce。

1.下載與安裝

Hadoop的下載示意如圖1-7所示。

圖1-7 Hadoop下載示意

其中,帶src的是Hadoop源碼包,另一個為Hadoop安裝包。下載完成后,將其安裝包上傳到服務器進行安裝。

首先,創建一個目錄作為Hadoop的安裝目錄,Hadoop的安裝十分簡單,解壓即可完成安裝,安裝Hadoop代碼如下:

【代碼1-11】安裝Hadoop

[root@huatec01 /]# mkdir /huatec

[root@huatec01 /]# tar –zxvf hadoop-2.7.3.tar.gz –C /huatec

[root@huatec01 /]# cd /huatec/

[root@huatec01 huatec]# ls-al

total 24

drwxr-xr-x.7 root root 4096 Sep 15 03:29.

drwxr-xr-x.21 root root 4096 Oct 12 23:59..

drwxr-xr-x.12 root root 4096 Sep 14 04:41 Hadoop-2.7.3

我們來看一看Hadoop的目錄結構是怎么樣的,進入安裝Hadoop的目錄,代碼如下所示:

【代碼1-12】Hadoop目錄結構

[root@huatec01 huatec]# cd Hadoop-2.7.3/

[root@huatec01 Hadoop-2.7.3]# ls-al

total 128

drwxr-xr-x.12 root root 4096 Sep 14 04:41.

drwxr-xr-x. 7 root root 4096 Sep 15 03:29..

drwxr-xr-x. 2 root root 4096 Aug 17 2016 bin

drwxr-xr-x. 3 root root  19 Aug 17 2016 etc

drwxr-xr-x. 2 root root  101 Aug 17 2016 include

drwxr-xr-x. 3 root root  16 Sep 14 04:41 journal

drwxr-xr-x. 3 root root  19 Aug 17 2016 lib

drwxr-xr-x. 2 root root 4096 Aug 17 2016 libexec

-rw-r--r--. 1 root root 84854 Aug 17 2016 LICENSE.txt

drwxr-xr-x. 3 root root 4096 Sep 27 05:37 logs

-rw-r--r--. 1 root root 14978 Aug 17 2016 NOTICE.txt

-rw-r--r--. 1 root root 1366 Aug 17 2016 README.txt

drwxr-xr-x. 2 root root 4096 Aug 17 2016 sbin

drwxr-xr-x. 4 root root  29 Aug 17 2016 share

drwxr-xr-x. 4 root root  35 Sep 14 04:46 tmp

目錄結構的含義見表1-1。

表1-1 Hadoop目錄結構說明

2.配置環境變量

安裝完Hadoop后,還需要為Hadoop配置全局變量,以方便我們執行Hadoop相關的一些指令,打開環境變量配置文件/etc/profile進行編輯,在文件中增加如下代碼所示信息:

【代碼1-13】配置Hadoop環境變量

[root@huatec01 local]# vi /etc/profi le

#Hadoop

HADOOP_HOME=/huatec/Hadoop-2.7.3

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

最后,我們執行source /etc/profi le指令來更新環境變量配置文件。

3.修改配置文件

要想啟動Hadoop,還需要進入$HADOOP_HOME/etc/hadoop/目錄,修改Hadoop的配置文件,主要有5個,分別為:

① hadoop.env.sh;

② core-site.xml;

③ hdfs-site.xml;

④ mapped-site.xml;

⑤ yarn-site.xml。

(1)hadoop.env.sh

該文件為Hadoop的運行環境配置文件,Hadoop的運行需要依賴JDK,我們將其中的export JAVA_HOME的值修改為安裝的JDK路徑,代碼如下所示:

【代碼1-14】配置Hadoop.env.sh

[root@huatec01 Hadoop]# vi Hadoop.env.sh

export JAVA_HOME=/usr/local/java/JDK1.7.0_80

...

(2)core-site.xml

該文件為Hadoop的核心配置文件,配置后的文件內容的代碼如下所示:

【代碼1-15】配置core-site.xml

[root@huatec01 Hadoop]# vi core-site.xml

...

<confi guration>

<property>

<name>fs.defaultFS </name>

<value>hdfs://huatec01:9000</value>

</property>

<property>

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

<value>/huatec/hadoop-2.7.3/tmp</value>

</property>

</configuration>

在上面的代碼中,我們主要配置了兩個屬性:第一個屬性用于指定HDFS的NameNode的通信地址,這里將其指定為huatec01;第二個屬性用于指定Hadoop運行時產生的文件存放目錄,這個目錄我們無須創建,因為在格式化Hadoop時會自動創建。

(3)hdfs-site.xml

該文件為HDFS核心配置文件,配置后的文件內容的代碼如下所示:

【代碼1-16】配置hdfs-site.xml

[root@huatec01 Hadoop]# vi hdfs-site.xml

...

<confi guration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</confi guration>

Hadoop集群默認的副本數量是3,但是現在只是在單節點上進行偽分布式安裝,無須保存3個副本,因此將該屬性的值修改為1。

(4)mapped-site.xml

這個文件是不存在的,但是有一個模板文件mapred-site.xml.template,我們將模板文件改名為mapred-site.xml,然后進行編輯。該文件為MapReduce核心配置文件,配置后的文件內容的代碼如下所示:

【代碼1-17】配置mapped-site.xml

[root@huatec01 Hadoop]# mv mapred-site.xml.template mapred-site.xml

[root@huatec01 Hadoop]# vi mapred-site.xml

...

<confi guration>

<property>

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

<value>yarn</value>

</property>

</confi guration>

之所以配置上面的屬性,是因為在Hadoop2.0之后,MapReduce是運行在Yarn架構上的,需要進行特別聲明。

(5)yarn-site.xml

該文件為Yarn框架配置文件,主要指定ResourceManager的節點名稱及NodeManager屬性,配置后的文件內容的代碼如下所示:

【代碼1-18】配置yarn-site.xml

[root@huatec01 Hadoop]# vi yarn-site.xml

...

<confi guration>

<property>

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

<value>huatec01</value>

</property>

<property>

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

<value>mapreduce_shuffl e</value>

</property>

</confi guration>

在上面的代碼中,我們配置了兩個屬性:第一個屬性用于指定ResourceManager的地址,因為是單節點部署,因此指定為huatec01即可;第二個屬性用于指定reducer獲取數據的方式。

4.格式化系統

至此,配置文件已經修改完畢了。那么是否就可以啟動Hadoop了呢?也不是的,在此之前,需要先對Hadoop進行格式化操作,也就是格式化HDFS。這有點類似新買的U盤,需要先格式化才能使用。對于Hadoop1.x,格式化指令為hadoop namenode-format,對于Hadoop2.x,格式化指令已經發生了變化,新的格式化指令為hdfs namenode-format。格式化成功后,tmp目錄被自動創建并存入了一些內容,可以查看一下tmp目錄,代碼如下所示:

【代碼1-19】查看格式化后的文件系統

[root@huatec01 Hadoop-2.7.3]# cd tmp/

[root@huatec01 tmp]# ls-al

total 4

drwxr-xr-x. 4 root root 35 Sep 14 04:46.

drwxr-xr-x.12 root root 4096 Sep 14 04:41..

drwxr-xr-x. 4 root root 28 Sep 14 04:45 dfs

drwxr-xr-x. 5 root root 54 Sep 27 06:11 nm-local-dir

[root@huatec01 tmp]# cd dfs

[root@huatec01 dfs]# ls-al

total 0

drwxr-xr-x.4 root root 28 Sep 14 04:45.

drwxr-xr-x.4 root root 35 Sep 14 04:46..

drwx------.3 root root 20 Sep 27 06:12 data

drwxr-xr-x.3 root root 20 Sep 27 06:12 name

[root@huatec01 dfs]# cd name/

[root@huatec01 name]# ls-al

total 12

drwxr-xr-x.3 root root 20 Sep 27 06:12.

drwxr-xr-x.4 root root 28 Sep 14 04:45..

drwxr-xr-x.2 root root 8192 Sep 15 05:33 current

[root@huatec01 name]# cd current/

[root@huatec01 current]# ls-al

total 1488

drwxr-xr-x.2 root root 8192 Sep 15 05:33.

drwxr-xr-x.3 root root 20 Sep 27 06:12..

-rw-r--r--.1 root root 42 Sep 15 02:01

edits_0000000000000000216-0000000000000000217

-rw-r--r--.1 root root 42 Sep 15 02:03

edits_0000000000000000218-0000000000000000219

-rw-r--r--.1 root root 42 Sep 15 02:05

edits_0000000000000000220-0000000000000000221

5.啟動Hadoop

啟動Hadoop有兩種方式。

方式一:我們可以先啟動dfs,然后啟動yarn。

start-dfs.sh

start-yarn.sh

方式二:一次啟動全部。

start-all.sh

建議采用方式一,這樣如果啟動失敗,也知道是哪個組件啟動失敗。而且Hadoop官方也推薦采用方式一。

啟動hdfs的代碼如下所示:

【代碼1-20】啟動hdfs

[root@huatec01 /]# start-dfs.sh

Starting namenodes on[huatec01]

huatec01: starting namenode,logging to /danji/Hadoop-2.7.3/logs/

Hadoop-root-namenode-huatec01.out

localhost: starting datanode, logging to /danji/Hadoop-2.7.3/

logs/Hadoop-root-datanode-huatec01.out

Starting secondary namenodes[0.0.0.0]

0.0.0.0: starting secondarynamenode, logging to /danji/

Hadoop-2.7.3/logs/Hadoop-root-secondarynamenode-huatec01.out

[root@huatec01 /]# jps

6704 DataNode

5170 ResourceManager

6959 Jps

6850 SecondaryNameNode

5262 NodeManager

[root@huatec01 /]#

通過啟動日志看到,在啟動hdfs的過程中,分別啟動了NameNode、DataNode、SecondaryNameNode。

接下來,啟動yarn,啟動過程代碼如下所示:

【代碼1-21】啟動yarn

[root@huatec01 /]# start-yarn.sh

starting yarn daemons

starting resourcemanager,logging to /danji/Hadoop-2.7.3/logs/yarn-root-resourcemanager-huatec01.out

localhost: starting nodemanager,logging to /danji/Hadoop-2.7.3/logs/yarn-root-nodemanager-huatec01.out

[root@huatec01 /]# jps

4844 DataNode

4983 SecondaryNameNode

5170 ResourceManager

5516 Jps

5262 NodeManager

通過日志看到,在啟動yarn的過程中,分別啟動了ResourceManager、NodeManager。

到此,Hadoop啟動成功。Hadoop管理界面如圖1-8所示。在該界面,我們可以了解整個HDFS的概況、文件存儲情況以及可視化操作HDFS中的文件。

圖1-8 Hadoop管理界面

MapReduce管理界面如圖1-9所示。通過該界面,我們可以知道系統在執行一個任務時啟動了多少個Job,以及監聽每個Job的運行資源情況,還可以查看Job的歷史、哪些Job運行成功、哪些Job運行失敗。

圖1-9 MapReduce管理界面

同理,關閉Hadoop也有兩種方式。

方式一:先關閉dfs,然后關閉yarn。

stop-dfs.sh

stop-yarn.sh

方式二:關閉所有。

stop-all.sh

通過體驗Hadoop的啟動和關閉,我們發現在啟動dfs的過程需要輸入3次密碼,在啟動yarn的過程需要輸入1次密碼,也就是說,每次啟動Hadoop都需要輸入4次密碼,分別對應NameNode、DataNode、SecondaryNameNode、NodeManager。關閉Hadoop的過程中同樣需要輸入4次密碼。單節點操作如此,如果是集群環境,那么啟動和關閉的過程就太麻煩了,因此,我們需要考慮解決這個問題。

6.配置SSH免密碼登錄

Hadoop進程間的通信使用的是SSH協議,即使是當前節點SSH自己,也需要輸入密碼。為了實現免密碼登錄,需要在 huatec01主機上進行配置,生成公鑰和私鑰,然后將自己的公鑰添加到信任列表中,這樣以后 SSH自己就不用輸入密碼了。并且也可以將公鑰發送給其他主機,讓其他主機可以 SSH免密碼登錄到當前主機。

首先,在huatec01上生成密鑰,執行如下代碼:

【代碼1-22】生成ssh密鑰

[root@huatec01 /]# cd /root/.ssh

[root@huatec01.ssh]# ssh-keygen-t rsa

[root@huatec02.ssh]# ls-al

total 20

drwx------.2 root root 76 Sep 14 04:32.

dr-xr-x---.5 root root 4096 Sep 27 05:51..

-rw-------.1 root root 1675 Jul 28 10:13 id_rsa

-rw-r--r--.1 root root 395 Jul 28 10:13 id_rsa.pub

執行ssh-keygen-t rsa生成密鑰,rsa是一種非對稱加密算法,即使是計算機破解也需要很多年,所以安全性相對來說還是比較高的。在生成密鑰的過程中,會提示輸入一些信息,此時可以不輸入,直接enter下一步。執行完成后查看/root/.ssh目錄,發現多了兩個文件,它們是生成的密鑰對。其中id_rsa是私鑰,需要保密;id_rsa.pub是公鑰,我們可以共享給其他可信任的用戶,讓其他用戶可以通過SSH免密碼連接到當前主機。我們可以打開文件查看密鑰內容,它的內容是一個比較長的字符串。查看ssh私鑰操作代碼如下:

【代碼1-23】查看ssh私鑰

[root@huatec02.ssh]# cat id_rsa

-----BEGIN RSA PRIVATE KEY----

MIIEowIBAAKCAQEAvJoGzez9jdt6z1zCXaK5GCVvyHRK0bPP67t29tt/lYXrzfmz

UhCrC6JUCN9x0Hm915bvsCx2vb73AekGbGaUDb30NHwo16U8pLO+6oSn0R0afa

pDOa6QKBgCUgIJfT2KgcbIt3OT0AsNuFZXnM8bllZ9t+Doie750rmarn5XNUqT2n

KvjlmI6shRkYYZdTIZRZeudUy/+2ZmlR8Jr0eaTDJSLeIW1iy4I4yvTUZV/z5DjQ

2uDIK4c3mpk4C+cRPI8n9JzFy1J6Ckf2DOdZtN5hlCI7IB2m7nbi

-----END RSA PRIVATE KEY----

接下來,執行cp id_rsa.pub authorized_keys指令將公鑰添加到自己信任的列表中。需要注意的是,authorized_keys文件夾本身是不存在的,但是名稱寫法必須是這樣才能有效,不可寫成其他名稱。

配置完免密碼登錄后,再次啟動Hadoop,發現已經不需要多次輸入密碼了。

【知識引申】:RSA加密算法概述

RSA加密算法起源于1977年,它的名稱是由3位發明者的姓氏開頭字母拼在一起組成的,他們分別是羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)。這種算法在當時發明后并沒有得到應用,直到10年后才首次在美國公布。

RSA是目前最有影響力和最常用的公鑰加密算法,在很多領域都得到廣泛的應用,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被ISO推薦為公鑰數據加密標準。它的加密強度和密鑰的長度有關,一般只有短的RSA鑰匙才可能被強力方式解破。截至2008年,世界上還沒有任何攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。但隨著分布式計算和量子計算機理論及技術的應用,RSA加密的安全性將受到挑戰和質疑。

1.2.3 Hadoop測試

安裝完Hadoop之后,分別測試Hadoop的兩大核心模塊:HDFS和MapReduce,查看其功能是否可用。通過文件上傳和下載來測試HDFS,通過Hadoop自帶的示例架包測試MapReduce。測試流程如下。

1.HDFS文件上傳、下載測試

我們將CentOS系統的一個文件上傳到HDFS上,上傳指令如下所示:

【代碼1-24】HDFS文件上傳

[root@huatec01 software]# hadoop fs-put /home/zhusheng/JDK-7u80linux-x64.tar /JDK

[root@huatec01 software]# hadoop fs-ls /

Found 12 items

...

-rw-r--r--3 root supergroup 308285440 2017-10-13 02:49 /JDK

通過執行Hadoop fs –put指令上傳文件,上傳完成后通過Hadoop fs –ls查看HDFS的文件結構,結果顯示上傳成功;我們也可以通過圖形化界面查看上傳的結果情況,如圖1-10所示。

圖1-10 文件上傳

現在下載我們上傳的文件,下載指令如下所示:

【代碼1-25】hdfs文件下載

[root@huatec01 software]# hadoop fs-get /JDK /home/zhusheng/JDK

[root@huatec01 software]# ls-al /home/zhusheng/

total 12

drwxr-xr-x.5 root root   4096 Oct 13 02:58.

drwxr-xr-x.3 root root 21 Jul 28 04:42..

...

-rw-r--r--.1 root root 308285440 Oct 13 02:58 JDK

我們也可以從瀏覽器下載,單擊需要下載的文件名,進入下載界面,如圖1-11所示。

圖1-11 Hadoop文件下載

需要注意的是,單擊“Download”會進入文件下載路徑,我們需要在當前電腦上配置huatec01與ip的映射關系或者修改下載路徑的主機名為具體的ip地址,才可以下載成功。

2.MapReduce測試

使用MapReduce框架提供的示例jar包進行測試,統計一個文件里面的單詞數量。該jar文件位于/huatec/Hadoop-2.7.3/share/hadoop/mapreduce目錄下,名稱為Hadoopmapreduce-examples-2.7.3.jar。

需要統計的文件內容的代碼如下所示:

【代碼1-26】查看統計文件

[root@huatec01 zhusheng]# cat sample-wordcount.txt

username zhusheng

username zhusheng

username caolijie

username zhaoyanhui

username zhaoyanhui

username zhangjing

username shaobing

username zhaoyanhui

username zhangjing

username zhangjing

將該文件上傳到HDFS,然后使用上面的jar包執行單詞統計指令,代碼如下:

【代碼1-27】執行統計指令

[root@huatec01 mapreduce]# hadoop fs-mkdir /sample/

[root@huatec01 mapreduce]# hadoop fs-put /home/zhusheng/samplewordcount.txt /sample/

[root@huatec01 mapreduce]# hadoop jar Hadoop-mapreduceexamples-2.7.3.jar wordcount/sample/sample-wordcount.txt /sample/sample-wordcount-result

17/10/13 03:19:13 INFO input.FileInputFormat: Total input paths to process : 1

17/10/13 03:19:14 INFO mapreduce.JobSubmitter: number of splits:1

17/10/13 03:19:14 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1507875298857_0001

17/10/13 03:19:15 INFO impl.YarnClientImpl: Submitted application application_1507875298857_0001

17/10/13 03:19:15 INFO mapreduce.Job: The url to track the job:http://huatec02:8088/proxy/application_1507875298857_0001/

17/10/13 03:19:15 INFO mapreduce.Job: Running job:job_1507875298857_0001

17/10/13 03:19:25 INFO mapreduce.Job: Job job_1507875298857_0001 running in uber mode : false

17/10/13 03:19:25 INFO mapreduce.Job: map 0% reduce 0%

17/10/13 03:19:32 INFO mapreduce.Job: map 100% reduce 0%

17/10/13 03:19:43 INFO mapreduce.Job: map 100% reduce 100%

17/10/13 03:19:43 INFO mapreduce.Job: Job job_1507875298857_0001 completed successfully

執行完成后,結果如圖1-12所示。

圖1-12 wordcount運行結果

下載結果文件sample-wordcount.result,其內容如圖1-13所示。

圖1-13 wordcount統計結果

1.2.4 任務回顧

知識點總結

1.搭建Hadoop偽分布式環境。

2.SSH原理。

3.為Hadoop配置SSH免密碼登錄。

4.Hadoop文件上傳及下載測試。

學習足跡

項目1任務二的學習足跡如圖1-14所示。

圖1-14 項目1任務二學習足跡

思考與練習

1.搭建Hadoop偽分布式環境有哪些步驟?

2.請簡述SSH原理,以及如何為Hadoop配置免密碼登錄。

主站蜘蛛池模板: 阳城县| 江达县| 龙口市| 万年县| 内丘县| 长顺县| 通州市| 礼泉县| 合阳县| 开化县| 渭源县| 濮阳县| 光泽县| 台中县| 额济纳旗| 大荔县| 浙江省| 炎陵县| 和平区| 鹤峰县| 永昌县| 武清区| 准格尔旗| 石屏县| 图木舒克市| 双柏县| 和平区| 关岭| 池州市| 通道| 江阴市| 文登市| 九江县| 怀远县| 义马市| 栖霞市| 板桥市| 日喀则市| 彭阳县| 宝兴县| 京山县|