中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

一、安裝hadoop

發布時間:2020-07-16 10:33:06 來源:網絡 閱讀:192 作者:隔壁小白 欄目:大數據

[TOC]

一、安裝前準備工作

1、使用軟件包情況

軟件包 版本
centos(redhat也是類似) 7.2 x64
hadoop 2.8.4
VMware workstations pro 12.0
jdk 1.8

2、系統環境準備

(1)關閉防火墻以及selinux

這個操作不是必須的,只是為了防止在一開始的過程中,因為防火墻的配置原因以及selinux的限制導致一些不必要的困難而已。
首先關閉防火墻:

//關閉防火墻并禁止開機自啟動
systemctl stop firewalld
systemctl disable firewalld

接著關閉selinux:

//查看selinux開啟狀態,enforcing 為開啟
getenforce
//首先更改selinux配置文件,防止重啟后自動開啟selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
//接著修改當前系統的selinux開啟狀態,0表示禁用
setenforce 0

(2)配置IP以及主機名

虛擬機所在網段 192.168.50.0/24,網關為 192.168.50.2,處于NAT網絡模式中。
配置虛擬為靜態IP:192.168.50.121

//首先關閉 NetworkManager 這個網絡服務,經常干擾到網絡問題
[root@localhost software]# systemctl stop NetworkManager
[root@localhost software]# systemctl disable NetworkManager

//然后修改網卡配置文件
[root@localhost software]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=dhcp
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=83b16941-ca72-46ad-85d4-c32929147098
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.50.121
GATEWAY=192.168.50.2
NETMASK=255.255.255.0
DNS1=192.168.50.2

//最后重啟網絡 network 服務
[root@localhost software]# systemctl restart network

//查看ip是否設置成功
[root@localhost software]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ea:b1:f7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.121/24 brd 192.168.50.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feea:b1f7/64 scope link 
       valid_lft forever preferred_lft forever

修改主機名為 bigdata121:

[root@localhost software]# hostnamectl set-hostname bigdata121
//該命令同時修改當前系統用戶名,以及 /etc/hostname 配置文件中的配置

(3)安裝jdk

眾所周知,hadoop 是使用java開發的,那么它就必須使用jdk來運行。下面開始安裝jdk

//創建兩個文件夾用于存放壓縮包以及解壓程序,software放壓縮包,modules解壓
[root@localhost software]# mkdir /opt/{software,modules}

//解壓jdk 到modules 目錄下
[root@localhost software]# tar zxf jdk-8u144-linux-x64.tar.gz -C /opt/modules/

//檢查下本地是否有安裝了其他版本的jdk,一般centos默認自帶openjdk,最好卸載掉
[root@localhost software]# rpm -qa | grep java
[root@localhost software]# rpm -e xxxx

//配置jdk PATH環境變量
[root@localhost software]# vim /etc/profile.d/java.sh
#!/bin/bash
export JAVA_HOME=/opt/modules/jdk1.8.0_144
export PATH=$PATH:${JAVA_HOME}/bin

//讓新的環境變量生效
[root@bigdata121 opt]# source /etc/profile.d/java.sh

//檢查環境變量是否配置成功,正確顯示下面的信息即為成功
[root@bigdata121 opt]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
[root@bigdata121 opt]# javac -version
javac 1.8.0_144

二、安裝并配置hadoop

1、安裝hadoop程序

//上傳hadoop壓縮包到 software,并解壓到 modules
[root@bigdata123 opt]# tar zxf software/hadoop-2.8.4.tar.gz -C /opt/modules/

//設置hadoop環境變量,將bin以及sbin目錄加入環境變量
[root@bigdata121 hadoop-2.8.4]# vim /etc/profile.d/hadoop.sh
#!/bin/bash
export HADOOP_HOME=/opt/modules/hadoop-2.8.4
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
[root@bigdata121 hadoop-2.8.4]# source /etc/profile.d/hadoop.sh

//檢查配置是否正確,打印以下信息表示OK
[root@bigdata121 hadoop-2.8.4]# hadoop version
Hadoop 2.8.4
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 17e75c2a11685af3e043aa5e604dc831e5b14674
Compiled by jdu on 2018-05-08T02:50Z
Compiled with protoc 2.5.0
From source with checksum b02a59bb17646783210e979bea443b0
This command was run using /opt/modules/hadoop-2.8.4/share/hadoop/common/hadoop-common-2.8.4.jar

2、hadoop組件中的成員

hadoop項目主要包含yarn、MapReduce、HDFS這三大組件,以及包含Common這個輔助工具包。

(1)yarn

用于作業調度與集群資源管理的框架,里面包含以下成員:

ResourceManager(rm):
處理客戶端請求、啟動/監控ApplicationMaster、監控NodeManager、資源分配與調度

NodeManager(nm):
單個節點上的資源管理、處理來自ResourceManager的命令、處理來自ApplicationMaster的命令

ApplicationMaster:
數據切分、為應用程序申請資源,并分配給內部任務、任務監控與容錯。其實就是MapReduce任務的driver端程序運行的地方

Container:
對任務運行環境的抽象,封裝了CPU、內存等多維資源以及環境變量、啟動命令等任務運行相關的信息。負責運行map或者reduce任務

(2)HDFS

一個分布式文件系統,適用于一次寫入多次讀取的場景。里面包含以下成員:

NameNode(nn):
存儲文件的元數據,如文件名、文件目錄結構,文件屬性等,以及每個文件的塊列表和塊所在的DataNode等。以及響應客戶端對hdfs的讀寫操作。還有保存讀寫日志

DataNode(dn):
在本地文件系統中存儲文件塊數據,以及塊數據的校驗和

SecondaryNameNode(snn):
用來監控HDFS狀態的輔助后臺程序,每隔一段時間獲取HDFS元數據的快照,相當于對NameNode進行備份。

3、hadoop的三種安裝模式

有三種安裝模式:本地模式、偽分布式模式,完全分布式模式

(1)本地模式

這種模式下是直接使用本地文件系統作為存儲系統,沒有HDFS,沒有yarn,只能用于測試MR程序,MR程序直接從本地文件系統讀取文件。
步驟:

/*配置/opt/modules/hadoop-2.8.4/etc/hadoop/hadoop-env.sh
修改這個主要是為了防止系統中JAVA_HOME這個環境變量沒有設置,而且這里獲取JAVA_HOME的時候是沒有判斷是否為空,所以最好手動指定一下。如果確定系統中配置了的話,就無需改動。*/
[root@bigdata121 hadoop]# vim hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}
改為:
export JAVA_HOME=/opt/modules/jdk1.8.0_144

這個過程中無需啟動hadoop的任何服務,因為只是使用MR框架而已。無需用到hdfs以及yarn。
使用wordcount實例測試:

[root@bigdata121 opt]# mkdir testdir
//創建字符統計的源數據文件。
[root@bigdata121 opt]# echo "i am wang , so you are wang too . i just jin tao king ." > testdir/name.txt

//運行wordcount,hadoop jar 目標jar包 主類名 輸入文件 輸出文件
[root@bigdata121 opt]# cd modules/hadoop-2.8.4/share/hadoop/mapreduce/
[root@bigdata121 mapreduce]# hadoop jar hadoop-mapreduce-examples-2.8.4.jar wordcount /opt/testdir/name.txt /opt/testdir/name.txt.output

//查看詞頻統計結果
[root@bigdata121 mapreduce]# cat /opt/testdir/name.txt.output/part-r-00000 
,   1
.   2
am  1
are 1
i   2
jin 1
just    1
king    1
so  1
tao 1
too 1
wang    2
you 1

注意:如果同時啟動了偽分布模式或者完全分布模式,本地模式就無法使用了,因為會默認到hdfs集群中尋找文件。而不是到本地文件系統中找文件。

(2)偽分布式模式

就是在一臺機器上部署完整的hadoop環境,具備yarn,hdfs,mapreduce功能。
主要有以下幾個組件和角色:

組件 包括角色
HDFS NameNode, SecondaryNameNode,DataNode
YARN ResourceManager,NodeManager

需要修改的配置文件,在 $HADOOP_HOME/etc/hadoop/:
1>core-site.xml

<configuration>
        <!--指定HDFS中namenode的地址以及端口 -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://bigdata121:9000</value>
        </property>

        <!--指定hadoop中hdfs保存數據塊和元數據塊的目錄 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/modules/hadoop-2.8.4/data/tmp</value>

        </property>
</configuration>

2>hdfs-site.xml

<configuration>
        <!--hdfs中數據的副本數,默認是3 -->
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>

        <!--指定secondarynameNode的http server地址,可通過訪問該頁面查看hdfs集群工作狀態 -->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>bigdata121:50090</value>
        </property>

        <!--各個節點間的權限認證,可以通過密碼或者秘鑰驗證。默認開啟 -->
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
</configuration>

3>yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
        <!--指定reducer獲取數據方式為shuffle機制-->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

        <!--指定yarn的resourceManager的主機名為 bigdata121-->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>bigdata121</value>
        </property>

        <!--啟動日志聚集功能-->
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>

        <!--指定日志保留時間為7天,單位是秒-->
        <property>
                <name>yarn.log-aggregation.retain-seconds</name>
                <value>604800</value>
        </property>
</configuration>

4>mapred-site.xml

<configuration>
        <!--指定mr運行與yarn之上 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>

        <!--指定mr任務歷史服務器的地址以及端口 -->
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>bigdata121:10020</value>
        </property>

        <!--指定mr任務歷史頁面地址 -->
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>bigdata121:19888</value>
        </property>
</configuration>

修改完配置文件后,對NameNode 進行格式化,生成hdfs需要的環境:

[root@bigdata121 hadoop-2.8.4]# hdfs namenode -format

注意:不要重復格式化,否則后面會無法啟動hdfs集群,如果需要重復格式化,請先手動刪除原來的hdfs的文件目錄

接著啟動集群:

//啟動hdfs相關的進程,如 nameNode,DataNode  ,對應的是關閉是 stop-dfs.sh
[root@bigdata121 hadoop-2.8.4]# start-dfs.sh 

//啟動yarn,對應的是關閉是 stop-yarn.sh
[root@bigdata121 hadoop-2.8.4]# start-yarn.sh

也可以使用 start-all.sh 一起啟動集群相關服務,但是該腳本已經棄用,不建議繼續使用,建議使用上面的分部方式。

jps查看相關進程是否啟動:

[root@bigdata121 sbin]# jps
15649 SecondaryNameNode
15493 DataNode
18278 Jps
15368 NameNode
15804 ResourceManager
15901 NodeManager

可以看到已經正常啟動了

也可以使用web查看相關的管理頁面:

http://bigdata121:8088 yarn管理頁面
http://bigdata121:50070 HDFS管理頁面

(3)完全分布式模式

在至少3臺機器上部署完整的hadoop環境,具備yarn,hdfs,mapreduce功能。
在配置完全分布式之前,因為我們在啟動每個進程時(datanode,namenode等這些進程),都需要手動輸入啟動進程所在的機器的用戶密碼。以及在關閉時,也是需要手動輸入密碼,這樣過于繁瑣。所以一般都會配置集群機器之間使用秘鑰登錄,這樣就無需手動輸入密碼了。

首先準備3臺機器,因為一般hdfs中默認都是3副本,所以最少DataNode為3臺機器。可以使用上面的偽分布式虛擬機克隆出兩臺虛擬機即可。各臺主機的ip,以及啟動的hadoop的進程情況規劃如下:

bigdata121 bigdata122 bigdata123
ip 192.168.50.121/24 192.168.50.122/24 192.168.50.123/24
HDFS NameNode, SecondaryNameNode DataNode DataNode
YARN ResourceName, NodeManager NodeManager

1> 配置三臺機器之間可以秘鑰登錄(包括自己登錄自己),三臺主機執行下面的命令:

//生成秘鑰
[root@bigdata122 ~]# ssh-keygen

//將公鑰復制到三臺機器的USER_HOME/.ssh目錄下
[root@bigdata122 ~]# ssh-copy-id bigdata121
[root@bigdata122 ~]# ssh-copy-id bigdata122
[root@bigdata122 ~]# ssh-copy-id bigdata123

2> 配置三臺機器時間同步
因為處于同一集群中,需保證時間一致,否則容易出現問題,導致集群紊亂。使用ntp同步時間

//能夠聯網
[root@bigdata121 ~]# /usr/sbin/ntpdate cn.ntp.org.cn

//無法聯網情況下,手動修改
[root@bigdata121 ~]# data -s "xxxx"

3>配置文件修改

主要配置文件和偽分布式模式中是一樣,除了將副本數修改為2。另外還需修改以下文件。
etc/hadoop/slaves 主要用于指定 DataNode 的主機名(主機名和ip均可,但要保證能解析到主機名),如:

//加上 datanode ip或者主機名
[root@bigdata121 hadoop-2.8.4]# cat etc/hadoop/slaves 
bigdata122
bigdata123

然后按按照偽分布式模式格式化即可

4>啟動集群
啟動只需在NameNode以及 ResourceManager所在的機器上啟動即可。他們會分別取其他機器上啟動對應的 dataNode以及NodeManager(其實就是用ssh類似的方式遠程到其他主機上執行啟動服務的腳本而已,這就是為啥要配置免密登錄了)。
NameNode:

[root@bigdata121 hadoop-2.8.4]# start-dfs.sh 
Starting namenodes on [bigdata121]
bigdata121: starting namenode, logging to /opt/modules/hadoop-2.8.4/logs/hadoop-root-namenode-bigdata121.out
bigdata123: starting datanode, logging to /opt/modules/hadoop-2.8.4/logs/hadoop-root-datanode-bigdata123.out
bigdata122: starting datanode, logging to /opt/modules/hadoop-2.8.4/logs/hadoop-root-datanode-bigdata122.out
Starting secondary namenodes [bigdata121]
bigdata121: starting secondarynamenode, logging to /opt/modules/hadoop-2.8.4/logs/hadoop-root-secondarynamenode-bigdata121.out

看日志就知道,分別到三臺主機啟動對應的進程服務

ResourceManager:

[root@bigdata121 hadoop-2.8.4]# start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /opt/modules/hadoop-2.8.4/logs/yarn-root-resourcemanager-bigdata121.out
bigdata123: starting nodemanager, logging to /opt/modules/hadoop-2.8.4/logs/yarn-root-nodemanager-bigdata123.out
bigdata122: starting nodemanager, logging to /opt/modules/hadoop-2.8.4/logs/yarn-root-nodemanager-bigdata122.out

注意:NameNode以及 ResourceManager必須是所在的機器上啟動,如果兩者不是在同一臺機器上的話,就必須分別到各自的機器單獨啟動。

5>配置過程中遇到的問題
常見問題是datanode中無法啟動datanode進程。查看 HADOOP_HOME/logs/xxx.log 啟動日志得知,是namenode和datanode的clusterID不同導致無法啟動。這種情況一般出現在重復格式化的時候,導致clusterID不同。解決方法就是刪掉namenode數據目錄,然后重新格式化即可。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枣强县| 农安县| 丹巴县| 南昌县| 鄂州市| 铜鼓县| 健康| 贵南县| 新兴县| 大洼县| 赤城县| 南雄市| 灵丘县| 会同县| 乌恰县| 启东市| 孝感市| 河源市| 屏东县| 贡山| 淮安市| 新干县| 莱芜市| 焦作市| 英山县| 靖江市| 土默特右旗| 天津市| 博客| 奎屯市| 洪湖市| 太仓市| 阜新| 兴义市| 灌云县| 延川县| 聊城市| 布尔津县| 英山县| 高雄县| 潜山县|