當前位置:首頁 » 雲伺服器 » 伺服器hadoop怎麼搭建

伺服器hadoop怎麼搭建

發布時間: 2022-10-02 00:44:44

❶ 安裝hadoop的步驟有哪些

hadoop2.0已經發布了穩定版本了,增加了很多特性,比如HDFSHA、YARN等。最新的hadoop-2.4.1又增加了YARNHA

注意:apache提供的hadoop-2.4.1的安裝包是在32位操作系統編譯的,因為hadoop依賴一些C++的本地庫,
所以如果在64位的操作上安裝hadoop-2.4.1就需要重新在64操作系統上重新編譯
(建議第一次安裝用32位的系統,我將編譯好的64位的也上傳到群共享里了,如果有興趣的可以自己編譯一下)

前期准備就不詳細說了,課堂上都介紹了
1.修改linux主機名
2.修改IP
3.修改主機名和IP的映射關系
######注意######如果你們公司是租用的伺服器或是使用的雲主機(如華為用主機、阿里雲主機等)
/etc/hosts裡面要配置的是內網IP地址和主機名的映射關系
4.關閉防火牆
5.ssh免登陸
6.安裝JDK,配置環境變數等

集群規劃:
主機名 IP 安裝的軟體 運行的進程
HA181 192.168.1.181 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA182 192.168.1.182 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA183 192.168.1.183 jdk、hadoop ResourceManager
HA184 192.168.1.184 jdk、hadoop ResourceManager
HA185 192.168.1.185 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA186 192.168.1.186 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA187 192.168.1.187 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

說明:
1.在hadoop2.0中通常由兩個NameNode組成,一個處於active狀態,另一個處於standby狀態。ActiveNameNode對外提供服務,而StandbyNameNode則不對外提供服務,僅同步activenamenode的狀態,以便能夠在它失敗時快速進行切換。
hadoop2.0官方提供了兩種HDFSHA的解決方案,一種是NFS,另一種是QJM。這里我們使用簡單的QJM。在該方案中,主備NameNode之間通過一組JournalNode同步元數據信息,一條數據只要成功寫入多數JournalNode即認為寫入成功。通常配置奇數個JournalNode
這里還配置了一個zookeeper集群,用於ZKFC(DFSZKFailoverController)故障轉移,當ActiveNameNode掛掉了,會自動切換StandbyNameNode為standby狀態
2.hadoop-2.2.0中依然存在一個問題,就是ResourceManager只有一個,存在單點故障,hadoop-2.4.1解決了這個問題,有兩個ResourceManager,一個是Active,一個是Standby,狀態由zookeeper進行協調
安裝步驟:
1.安裝配置zooekeeper集群(在HA185上)
1.1解壓
tar-zxvfzookeeper-3.4.5.tar.gz-C/app/
1.2修改配置
cd/app/zookeeper-3.4.5/conf/
cpzoo_sample.cfgzoo.cfg
vimzoo.cfg
修改:dataDir=/app/zookeeper-3.4.5/tmp
在最後添加:
server.1=HA185:2888:3888
server.2=HA186:2888:3888
server.3=HA187:2888:3888
保存退出
然後創建一個tmp文件夾
mkdir/app/zookeeper-3.4.5/tmp
再創建一個空文件
touch/app/zookeeper-3.4.5/tmp/myid
最後向該文件寫入ID
echo1>/app/zookeeper-3.4.5/tmp/myid
1.3將配置好的zookeeper拷貝到其他節點(首先分別在HA186、HA187根目錄下創建一個weekend目錄:mkdir/weekend)
scp-r/app/zookeeper-3.4.5/HA186:/app/
scp-r/app/zookeeper-3.4.5/HA187:/app/

注意:修改HA186、HA187對應/weekend/zookeeper-3.4.5/tmp/myid內容
HA186:
echo2>/app/zookeeper-3.4.5/tmp/myid
HA187:
echo3>/app/zookeeper-3.4.5/tmp/myid

2.安裝配置hadoop集群(在HA181上操作)
2.1解壓
tar-zxvfhadoop-2.4.1.tar.gz-C/weekend/
2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目錄下)
#將hadoop添加到環境變數中
vim/etc/profile
exportjava_HOME=/app/jdk1.7.0_79
exportHADOOP_HOME=/app/hadoop-2.4.1
exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

2.2.1修改hadoop-env.sh
exportJAVA_HOME=/app/jdk1.7.0_79

2.2.2修改core-site.xml
<configuration>
<!--指定hdfs的nameservice為ns1-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!--指定hadoop臨時目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop-2.4.1/tmp</value>
</property>

<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>HA185:2181,HA186:2181,HA187:2181</value>
</property>
</configuration>

2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致-->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!--ns1下面有兩個NameNode,分別是nn1,nn2-->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!--nn1的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>HA181:9000</value>
</property>
<!--nn1的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>HA181:50070</value>
</property>
<!--nn2的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>HA182:9000</value>
</property>
<!--nn2的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>HA182:50070</value>
</property>
<!--指定NameNode的元數據在JournalNode上的存放位置-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://HA185:8485;HA186:8485;HA187:8485/ns1</value>
</property>
<!--指定JournalNode在本地磁碟存放數據的位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/app/hadoop-2.4.1/journaldata</value>
</property>
<!--開啟NameNode失敗自動切換-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--配置失敗自動切換實現方式-->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.</value>
</property>
<!--配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!--使用sshfence隔離機制時需要ssh免登陸-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!--配置sshfence隔離機制超時時間-->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

2.2.4修改mapred-site.xml
<configuration>
<!--指定mr框架為yarn方式-->
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
</configuration>

2.2.5修改yarn-site.xml
<configuration>
<!--開啟RM高可用-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定RM的clusterid-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!--指定RM的名字-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--分別指定RM的地址-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>HA183</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>HA184</value>
</property>
<!--指定zk集群地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>HA185:2181,HA186:2181,HA187:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
</configuration>


2.2.6修改slaves(slaves是指定子節點的位置,因為要在HA181上啟動HDFS、在HA183啟動yarn,
所以HA181上的slaves文件指定的是datanode的位置,HA183上的slaves文件指定的是nodemanager的位置)
HA185
HA186
HA187

2.2.7配置免密碼登陸
#首先要配置HA181到HA182、HA183、HA184、HA185、HA186、HA187的免密碼登陸
#在HA181上生產一對鑰匙
ssh-keygen-trsa
#將公鑰拷貝到其他節點,包括自己
ssh--idHA181
ssh--idHA182
ssh--idHA183
ssh--idHA184
ssh--idHA185
ssh--idHA186
ssh--idHA187
#配置HA183到HA184、HA185、HA186、HA187的免密碼登陸
#在HA183上生產一對鑰匙
ssh-keygen-trsa
#將公鑰拷貝到其他節點
ssh--idHA184
ssh--idHA185
ssh--idHA186
ssh--idHA187
#注意:兩個namenode之間要配置ssh免密碼登陸,別忘了配置HA182到HA181的免登陸
在HA182上生產一對鑰匙
ssh-keygen-trsa
ssh--id-iHA181

2.4將配置好的hadoop拷貝到其他節點
scp-r/app/hadoop-2.5.1/HA182:/app/
scp-r/app/hadoop-2.5.1/HA183:/app/
scp-r/app/hadoop-2.5.1/HA184:/app/
scp-r/app/hadoop-2.5.1/HA185:/app/
scp-r/app/hadoop-2.5.1/HA186:/app/
scp-r/app/hadoop-2.5.1/HA187:/app/
###注意:嚴格按照下面的步驟
2.5啟動zookeeper集群(分別在HA185、HA186、tcast07上啟動zk)
cd/app/zookeeper-3.4.5/bin/
./zkServer.shstart
#查看狀態:一個leader,兩個follower
./zkServer.shstatus

2.6啟動journalnode(分別在在HA185、HA186、HA187上執行)
cd/app/hadoop-2.5.1
hadoop-daemon.shstartjournalnode
#運行jps命令檢驗,HA185、HA186、HA187上多了JournalNode進程
2.7格式化ZKFC(在HA181上執行即可) hdfszkfc-formatZK
2.8格式化HDFS
#在HA181上執行命令:
hdfsnamenode-format
#格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這里我配置的是/app/hadoop-2.4.1/tmp,然後將/weekend/hadoop-2.4.1/tmp拷貝到HA182的/weekend/hadoop-2.4.1/下。
scp-rtmp/HA182:/app/hadoop-2.5.1/
##也可以這樣,建議hdfsnamenode-bootstrapStandby



2.9啟動HDFS(在HA181上執行)
sbin/start-dfs.sh

2.10啟動YARN(#####注意#####:是在HA183上執行start-yarn.sh,把namenode和resourcemanager分開是因為性能問題,因為他們都要佔用大量資源,所以把他們分開了,他們分開了就要分別在不同的機器上啟動)
sbin/start-yarn.sh


到此,hadoop-2.4.1配置完畢,可以統計瀏覽器訪問:
http://192.168.1.181:50070
NameNode'HA181:9000'(active)
http://192.168.1.182:50070
NameNode'HA182:9000'(standby)

驗證HDFSHA
首先向hdfs上傳一個文件
hadoopfs-put/etc/profile/profile
hadoopfs-ls/
然後再kill掉active的NameNode
kill-9<pidofNN>
通過瀏覽器訪問:http://192.168.1.182:50070
NameNode'HA182:9000'(active)
這個時候HA182上的NameNode變成了active
在執行命令:
hadoopfs-ls/
-rw-r--r--3rootsupergroup19262014-02-0615:36/profile
剛才上傳的文件依然存在!!!
手動啟動那個掛掉的NameNode
sbin/hadoop-daemon.shstartnamenode
通過瀏覽器訪問:http://192.168.1.181:50070
NameNode'HA181:9000'(standby)

驗證YARN:
運行一下hadoop提供的demo中的WordCount程序:
hadoopjarshare/hadoop/maprece/hadoop-maprece-examples-2.4.1.jarwordcount/profile/out

OK,大功告成!!!
CID-74d21742-3e4b-4df6-a99c-d52f703b49c0



測試集群工作狀態的一些指令:
bin/hdfsdfsadmin-report 查看hdfs的各節點狀態信息


bin/hdfshaadmin-getServiceStatenn1 獲取一個namenode節點的HA狀態

sbin/hadoop-daemon.shstartnamenode單獨啟動一個namenode進程


./hadoop-daemon.shstartzkfc單獨啟動一個zkfc進程

❷ 如何配置Hadoop環境

資源下載

1、JDK下載:下載鏈接
2、hadoop:下載鏈接
3、下載完成後驗證一下下載,將計算的MD5值與官網的進行對比已驗證安裝包的准確性:

md5sum ./hadoop-2.6.*.tar.gz | tr "a-z" "A-Z" # 計算md5值,並轉化為大寫,方便比較1

一、創建Hadoop用戶

創建hadoop用戶,並分配以用戶名為家目錄/home/hadoop,並將其加入到sudo用戶組,創建好用戶之後,以hadoop用戶登錄:

sudo useradd -m hadoop -s /bin/bash sudo adser hadoop sudo
sudo passwd hadoop # 設置hadoop用戶密碼123

二、安裝JDK、Hadoop及配置環境變數

安裝,解壓JDK到/usr/lib/java/路徑下,Hadoop到/usr/local/etc/hadoop/路徑下:

tar zxf ./hadoop-2.6.*.tar.gz
mv ./hadoop-2.6.* /usr/local/etc/hadoop # 將 /usr/local/etc/hadoop作為Hadoop的安裝路徑12

解壓完成之後,可驗證hadoop的可用性:

cd /usr/local/etc/hadoop
./bin/hadoop version # 查看hadoop的版本信息12

若在此處,會出現類似以下的錯誤信息,則很有可能是該安裝包有問題。

Error: Could not find or load main class org.apache.hadoop.util.VersionInfo1

配置環境,編輯「/etc/profile」文件,在其後添加如下信息:

export HADOOP_HOME=/usr/local/etc/hadoopexport JAVA_HOME=/usr/lib/java/jdk1.8.0_45export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin12345

使配置的變數生效:

source /etc/profile1

三、測試一下

在此我們可以運行一個簡單的官方Demo:

cd `echo $HADOOP_HOME` # 到hadoop安裝路徑
mkdir ./input
cp ./etc/hadoop/*.xml ./input
hadoop jar ./share/hadoop/maprece/hadoop-maprece-examples-*.jar grep ./input ./output 'dfs[a-z.]+'1234

輸出的結果應該會是:

1 dfsadmin 1

  • 這里有一點需要注意,該Example程序運行時不能已存在output目錄,否則或將無法執行!

  • 四、Hadoop的偽分布式環境搭建

    什麼是偽分布式?Hadoop 偽分布式模式是在一台機器上模擬Hadoop分布式,單機上的分布式並不是真正的分布式,而是使用線程模擬的分布式。分布式和偽分布式這兩種配置也很相似,唯一不同的地方是偽分布式是在一台機器上配置,也就是名位元組點(namenode)和數據節點(datanode)均是同一台機器。

    需要配置的文件有core-site.xml和hdfs-site.xml這兩個文件他們都位於${HADOOP_HOME}/etc/hadoop/文件夾下。
    其中core-site.xml:

  • 1 <?xml version="1.0" encoding="UTF-8"?>

  • 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

  • 3 <!--

  • 4 Licensed ...

  • -->

  • 18

  • 19 <configuration>

  • 20 <property>

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

  • 22 <value>file:/home/hadoop/tmp</value>

  • 23 <description>Abase for other temporary directories.</description>

  • 24 </property>

  • 25 <property>

  • 26 <name>fs.default.name</name>

  • 27 <value>hdfs://master:9000</value>

  • 28 </property>

  • 29 </configuration> 1234567891011121314151617

  • 文件hdfs-site.xml的配置如下:

  • 1 <?xml version="1.0" encoding="UTF-8"?>

  • 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

  • 3 <!--

  • 4 Licensed ...

  • -->

  • 18

  • 19 <configuration>

  • 20 <property>

  • 21 <name>dfs.replication</name>

  • 22 <value>1</value>

  • 23 </property>

  • 24 <property>

  • 25 <name>dfs.namenode.name.dir</name>

  • 26 <value>file:/home/hadoop/tmp/dfs/name</value>

  • 27 </property>

  • 28 <property>

  • 29 <name>dfs.datanode.data.dir</name>

  • 30 <value>file:/home/hadoop/tmp/dfs/data</value>

  • 31 </property>

  • 32 </configuration>

  • 配置完成後,執行格式化命令,使HDFS將制定的目錄進行格式化:

  • hdfs namenode -format1

  • 若格式化成功,在臨近輸出的結尾部分可看到如下信息:

    如果發現並沒有出現如上信息,則使用刷新節點命令進行刷新:

  • hdfs dfsadmin -refreshNodes1

  • 八、HDFS集群實例測試

    依然是之前的那個示例,首先,創建一個數據源文件夾,並添加數據:

  • hdfs dfs -mkdir /input

  • hdfs dfs -put /usr/local/etc/hadoop/etc/hadoop/*.xml /input12

  • 運行maprece示例:

  • hadoop jar /usr/local/etc/hadoop/share/hadoop/maprece/hadoop-maprece-examples-*.jar grep /input /output 'dfs[a-z.]+'1

  • holding…

❸ 搭建一個hadoop2.x需要准備哪些軟體

工具/原料

linux系統(本篇使用的是CentOS v6.5)
Hadoop安裝包(本篇使用的是hadoop v2.6.0)
環境要求

1
需要安裝JDK6.0以上版本(可自行解壓安裝或使用自帶的軟體安裝包,如yum)

2
需要無密碼登錄的SSH環境(安裝ssh及sshd,具體配置步驟在後面介紹)

END
安裝/配置 步驟

1
配置hosts文件,將主機名和對應IP地址映射。如圖中Master、Slave1和Slave2是我們要搭建分布式環境的機器。Master為主機,Slavex為從機。

2
配置SSH的無密碼登錄:可新建專用用戶hadoop進行操作,cd命令進入所屬目錄下,輸入以下指令(已安裝ssh)
ssh-keygen -t rsa -P ""
cat .ssh/id_rsa.pub >>.ssh/authorized_keys
解釋一下,第一條生成ssh密碼的命令,-t 參數表示生成演算法,有rsa和dsa兩種;-P表示使用的密碼,這里使用「」空字元串表示無密碼。
第二條命令將生成的密鑰寫入authorized_keys文件。
這時輸入 ssh localhost,彈出寫入提示後回車,便可無密碼登錄本機。同理,將authorized_keys文件 通過 scp命令拷貝到其它主機相同目錄下,則可無密碼登錄其它機器。

3
安裝hadoop:安裝方式很簡單,下載安裝包到所屬目錄下,使用
tar -zxvf 安裝包名
進行解壓,解壓完畢可通過mv 命令重命名文件夾,安裝至此完成。解壓後的目錄內容如圖所示。

4
hadoop配置過程:要實現分布式環境,配置過程是最為重要的,
這里要涉及到的配置文件有7個:
~/hadoop/etc/hadoop/hadoop-env.sh
~/hadoop/etc/hadoop/yarn-env.sh
~/hadoop/etc/hadoop/slaves
~/hadoop/etc/hadoop/core-site.xml
~/hadoop/etc/hadoop/hdfs-site.xml
~/hadoop/etc/hadoop/mapred-site.xml
~/hadoop/etc/hadoop/yarn-site.xml
之後會分別介紹各個配置的的作用和配置關鍵

5
配置文件1:hadoop-env.sh
該文件是hadoop運行基本環境的配置,需要修改的為java虛擬機的位置。
故在該文件中修改JAVA_HOME值為本機安裝位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)

6
配置文件2:yarn-env.sh
該文件是yarn框架運行環境的配置,同樣需要修改java虛擬機的位置。
在該文件中修改JAVA_HOME值為本機安裝位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)

7
配置文件3:slaves
該文件裡面保存所有slave節點的信息,以本篇為例
寫入以下內容(hosts里從機的主機名):
Slave1
Slave2

8
配置文件4:core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop-${user.name}</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://Master:9000</value>
</property>
</configuration>
這個是hadoop的核心配置文件,這里需要配置的就這兩個屬性,fs.default.name配置了hadoop的HDFS系統的命名,位置為主機的9000埠;hadoop.tmp.dir配置了hadoop的tmp目錄的根位置。這里使用了一個文件系統中沒有的位置,所以要先用mkdir命令新建一下。

9
配置文件5:hdfs-site.xml
<configuration>
<property>
<name>dfs.http.address</name>
<value>Master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name><value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
這個是hdfs的配置文件,dfs.http.address配置了hdfs的http的訪問位置;dfs.replication配置了文件塊的副本數,一般不大於從機的個數。

10
配置文件6:mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>Master:9001</value>
</property>
<property>
<name>mapred.map.tasks</name>
<value>20</value>
</property>
<property>
<name>mapred.rece.tasks</name>
<value>4</value>
</property>
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>maprece.jobhistory.address</name><value>Master:10020</value>
</property>
<property><name>maprece.jobhistory.webapp.address</name><value>Master:19888</value>
</property>
</configuration>

這個是maprece任務的配置,由於hadoop2.x使用了yarn框架,所以要實現分布式部署,必須在maprece.framework.name屬性下配置為yarn。mapred.map.tasks和mapred.rece.tasks分別為map和rece的任務數,至於什麼是map和rece,可參考其它資料進行了解。
其它屬性為一些進程的埠配置,均配在主機下。

11
配置文件7:yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheler.address</name>
<value>Master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name><value>Master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name><value>Master:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name><value>maprece_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.maprece.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
</configuration>
該文件為yarn框架的配置,主要是一些任務的啟動位置

12
將配置好的hadoop復制到其他節點
scp –r ~/hadoop hadoop@Slave1:~/
scp –r ~/hadoop hadoop@Slave2:~/
END
啟動驗證

格式化namenode:
./bin/hdfs namenode -format
若出現如圖所示提示,則格式化成功

啟動hdfs: ./sbin/start-dfs.sh
此時在Master上面運行的進程有:namenode secondarynamenode
Slave1和Slave2上面運行的進程有:datanode
啟動yarn: ./sbin/start-yarn.sh
此時在Master上面運行的進程有:namenode secondarynamenode resourcemanager
Slave1和Slave2上面運行的進程有:datanode nodemanager

3
檢查啟動結果
查看集群狀態:./bin/hdfs dfsadmin –report
查看文件塊組成: ./bin/hdfsfsck / -files -blocks
查看HDFS: http://192.168.101.248:50070(主機IP)
查看RM: http:// 192.168.101.248:8088(主機IP)
正確情況如圖顯示

❹ 如何構建最優化的Hadoop集群

操作系統
我們選擇Linux作為操作系統。Linux有許多不同的發行版,包括Ubuntu、RedHat和CentOS等,無論選擇哪一個都可以。基於支持和許可費用的考慮,我們最終選擇了CentOS 5.7。最好是定製一個CentOS的映像,把那些需要的軟體都預裝進去,這樣所有的機器可以包含相同的軟體和工具,這是一個很好的做法。
根據Cloudera的建議,OS層應該採用以下設置:
文件系統
Ext3文件系統
取消atime
不要使用邏輯卷管理
利用alternatives來管理鏈接
使用配置管理系統(Yum、Permission、sudoers等)
減少內核交換
撤銷一般用戶訪問這些雲計算機的許可權
不要使用虛擬化
至少需要以下Linux命令:
/etc/alternatives
ln、chmod、chown、chgrp、mount、umount、kill、rm、yum、mkdir
硬體要求
由於Hadoop集群中只有兩種節點(Namenode/Jobtracker和Datanode/Tasktracker),因此集群內的硬體配置不要超過兩種或三種。

圖2 - Hadoop集群伺服器角色
硬體建議:
Namenode/Jobtracker:1Gb/s乙太網口x2、16GB內存、4個CPU、100GB磁碟
Datanode:1Gb/s乙太網口x2、8GB內存、4個CPU、多個磁碟,總容量500GB以上
實際的硬體配置可以與我們建議的配置不同,這取決於你們需要存儲和處理的數據量。但我們強烈建議不要在集群中混用不同的硬體配置,以免那些較弱的機器成為系統的瓶頸。
Hadoop的機架感知
Hadoop有一個「機架感知」特性。管理員可以手工定義每個slave數據節點的機架號。為什麼要做這么麻煩的事情?有兩個原因:防止數據丟失和提高網路性能。

圖3 - Hadoop集群的機架感知
為了防止數據丟失,Hadoop會將每個數據塊復制到多個機器上。想像一下,如果某個數據塊的所有拷貝都在同一個機架的不同機器上,而這個機架剛好發生故障了(交換機壞了,或者電源掉了),這得有多悲劇?為了防止出現這種情況,必須要有一個人來記住所有數據節點在網路中的位置,並且用這些知識來確定——把數據的所有拷貝們放在哪些節點上才是最明智的。這個「人」就是Name Node。
另外還有一個假設,即相比不同機架間的機器,同一個機架的機器之間有著更大的帶寬和更小的延時。這是因為,機架交換機的上行帶寬一般都小於下行帶寬。而且,機架內的延時一般也小於跨機架的延時(但也不絕對)。
機架感知的缺點則是,我們需要手工為每個數據節點設置機架號,還要不斷地更新這些信息,保證它們是正確的。要是機架交換機們能夠自動向Namenode提供本機架的數據節點列表,那就太棒了。
Hadoop軟體的安裝和配置
Hadoop集群有多種構建方式:
手工下載tar文件並復制到集群中
利用Yum倉庫
利用Puppet等自動化部署工具
我們不建議採用手工方式,那隻適合很小的集群(4節點以下),而且會帶來很多維護和排障上的問題,因為所有的變更都需要用scp或ssh的方式手工應用到所有的節點上去。
從以下方面來看,利用Puppet等部署工具是最佳的選擇:
安裝
配置
維護
擴展性
監控
排障
Puppet是Unix/Linux下的一個自動化管理引擎,它能基於一個集中式的配置執行增加用戶、安裝軟體包、更新伺服器配置等管理任務。我們將主要講解如何利用Yum和Puppet來安裝Hadoop。
利用Yum/Puppet搭建Hadoop集群
要利用Puppet搭建Hadoop集群,首先要符合以下前置條件:
包含所有必需Hadoop軟體的中央倉庫
用於Hadoop部署的Puppet裝載單(manifest)
用於Hadoop配置管理的Puppet裝載單
用於集群維護的框架(主要是sh或ksh腳本),以支持集群的start/stop/restart
利用puppet構建整個伺服器(包括操作系統和其它軟體)
註:如果要用Yum來安裝Hadoop集群,則所有伺服器應該預先構建完成,包括操作系統和其它軟體都應安裝完畢,yum倉庫也應在所有節點上設置完畢。
構建Datanode/Tasktracker
如果用Yum安裝Datanode/Tasktracker,需在所有數據節點上執行以下命令:

yum install hadoop-0.20-datanode –y
yum install hadoop-0.20-tasktracker –y

換成Puppet的話,則是:

class setup_datanode {
if ($is_datanode == true) {
make_dfs_data_dir { $hadoop_disks: }
make_mapred_local_dir { $hadoop_disks: }
fix_hadoop_parent_dir_perm { $hadoop_disks: }
}
# fix hadoop parent dir permissions
define fix_hadoop_parent_dir_perm() {

}
# make dfs data dir
define make_dfs_data_dir() {

}
# make mapred local and system dir
define make_mapred_local_dir() {

}
} # setup_datanode

構建Namenode(及輔助Namenode)
如果用Yum安裝Namenode,需在所有數據節點上執行以下命令:

yum install hadoop-0.20-namenode –y
yum install hadoop-0.20-secondarynamenode –y

換成Puppet的話,則是:

class setup_namenode {
if ($is_namenode == true or $is_standby_namenode == true) {
...
}
exec {"namenode-dfs-perm":
...
}
exec { "make ${nfs_namenode_dir}/dfs/name":
...
}
exec { "chgrp ${nfs_namenode_dir}/dfs/name":
...
}
if ($standby_namenode_host != "") {
...
}
exec { "own $nfs_standby_namenode_dir":
...
}
}
# /standby_namenode_hadoop
if ($standby_namenode_host != "") {
...
}
exec { "own $standby_namenode_hadoop_dir":
...
}
}
}
}
class setup_secondary_namenode {
if ($is_secondarynamenode == true) {
...
}
....
}
exec {"namenode-dfs-perm":
...
}
}
}

構建JobTracker
如果用Yum安裝Jobtracker,需在所有數據節點上執行以下命令:

yum install hadoop-0.20-jobtracker –y

換成Puppet的話,則是使用與構建Namenode相同的裝載單,唯一的區別在於,在Jobtracker機器上,會啟動Jobtracker——即將該機器上的is_jobtracker設置為true。

❺ 如何在浪潮伺服器上部署hadoop

據國外媒體消息,為應對海量數據浪潮,VMware啟動Serengeti開放原始碼計劃,便於企業在VMware vSphere虛擬化平台上快速部署與管理Apache Hadoop集群,部署虛擬化技術與分布式計算混用的基礎架構。
通過Serengeti計劃,VMware開放一組工具組,可在Apache 2.0網頁免費下載,讓企業IT人員利用指令介面(Command Line Interface,CLI)在vSphere平台建立、設定、啟用與管理Hadoop集群,包括Hadoop共通組件如Apache Pig與Apache Hive等。例如,IT人員可用這些工具組設定單台虛擬計算節配置多少內存、存儲與網路資源。目前VMware已和Cloudera、Greenplum、Hortonworks、IBM及MapR等Hadoop廠商合作推廣Serengeti計劃。
此外,VMware還為Hadoop放出新的原始碼,包括HDFS(Hadoop Distributed File System)和Hadoop MapRece項目的擴展組件,可在虛擬化平台當中,將數據和計算任務分散到不同虛擬計算節點。並且VMware發布了Spring for Apache Hadoop分布式計算開發平台的更新版本,讓企業開發人員整合HBase資料庫、Cascading函數庫及Hadoop安全功能,來開發采Hadoop技術的應用系統。

❻ Linux伺服器上搭建hadoop

用不同的賬號,當然可以。
我用相同的賬號,搭建了兩套環境,只要安裝hadoop的目錄不再同一個目錄下就可以。然後就是注意你的/etc/profile盡量不要配置HADOOP_HOME的值,只配置JDK就可以了,不然可能會用沖突,不知道該去找哪個hadoop home 了。

❼ 怎樣在linux系統上搭建Hadoop集群

(1)下載jdk,在官網下載,下載rpm的包
(2)hadoop包的下載,官網上下載
download hadoop->release->mirror site(鏡像站)->隨便選擇離自己近的(HTTP下的第一個)->選擇2.7.2->下載.tar.gz
(3)將兩個包遠程傳輸到linux虛擬機中
(4)將主機名和ip地址進行適配,讓我們的ip地址和主機名(如bigdata)相匹配:寫到/etc/hosts裡面
vi /etc/hosts
按「i」進入插入狀態 將原有的地址注釋掉
在新的一行輸入:ip地址 主機名(如172.17.171.42 bigdata)(註:可以雙擊xshell的窗口再打開一個連接窗口,可以在新的窗口查詢ip地址並進行復制)
按「Esc」退出插入狀態
輸入:wq保存退出
修改完之後可以輸入hostname回車,查看是否成功
reboot:重啟,使得剛剛的修改生效
(5)將包放到opt下:cp hadoop-2.7.2.tar.gz /opt/
cp jdk-8u111-linux-x64.rpm /opt/
進入opt:cd /opt/
查看opt下的文件:ll
(6)安裝jdk,配置jdk的環境變數
安裝命令:rpm -ivh jdk-Bu101-linux-x64.rpm
配置環境變數:進入profile進行編輯:vi /etc/profile
並按照上面的方式在最後寫入並保存:JAVA_HOME=/usr/java/default/(/usr/java/default/是jdk的安裝目錄)
列印JAVA_HOME檢驗是否配置好:echo $JAVA_HOME結果發現列印出來的沒有內容因為我們對/etc/profile的修改需要通過以下命令對它生效source /etc/profile。再次輸入echo $JAVA_HOME,列印結果為/usr/java/default/
(7)驗證jdk安裝好:java -version
(8)配置SSH(免密碼登錄)
回到根目錄:cd 安裝SSH秘鑰:ssh-keygen -t rsa會自動在/root/.shh/目錄下生成
查看目錄:ll .ssh/有兩個新生成的文件id_rsa(私鑰),id_rsa.pub(公鑰)
進入.ssh/:cd .ssh/
將公鑰寫入authorized_key中:cat id_rsa.pub >> authorized_keys
修改authorized_keys文件的許可權:chmod 644 authorized_keys
修改完後退出.ssh的目錄cd進入初始目錄輸入:ssh bigdata(bigdata為你要遠程登錄的主機名或者ip地址)第一次登錄需要確認是否需要繼續登錄輸入yes繼續登錄
退出exit
(9)安裝及配置hadoop
解壓:tar zxf hadoop-2.7.2.tar.gz
查看/opt目錄下是否已經存在解壓的文件:ll(結果為出現hadoop-2.7.2)
繼續查看hadoop-2.7.2里的內容:cd hadoop-2.7.2
配置HADOOP_HOME:修改/etc/profile
進入hadoop的配置文件目錄cd /opt/hadoop-2.7.2/etc/hadoop/,會用的的配置文件如下:
core-site.xml
配置hadoop的文件系統即HDFS的埠是什麼。
配置項1為default.name,值為hdfs://bigdata:9000(主機名:bigdata也可也寫成ip地址,埠9000習慣用)
配置項2為hadoop臨時文件,其實就是配置一個目錄,配置完後要去創建這個目錄,否則會存在問題。
配置項3分布式文件系統的垃圾箱,值為4320表示3分鍾回去清理一次

<property>
<name>fs.default.name</name>
<value>hdfs://bigdata:9000</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.7.2/current/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>4320</value>
</property>
hdfs-site.xml
配置項1,namenode的細節實際上就是一個目錄
配置項2,datanode的細節,真實環境中datanode的內容不需要再namenode的系統下配置,在此配置的原因是我們的系統是偽分布式系統,namenode和datanode在一台機器上
配置項3,副本的數量,在hdfs中每個塊有幾個副本
配置項4,HDFS是否啟用web
配置項5,HDFS的用戶組
配置項6,HDFS的許可權,現在配置為不開啟許可權

<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-2.7.2/current/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-2.7.2/current/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>staff</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
創建配置文件中不存在的目錄:mkdir -p /opt/hadoop-2.7.2/current/data
mkdir -p /opt/hadoop-2.7.2/current/dfs/name
mkdir -p /opt/hadoop-2.7.2/current/tmp
yarn-site.xml
配置項1,resourcemanager的hostname,值為你運行的那台機器的主機名或IP地址
配置項2,nodemanager相關的東西
配置項3,nodemanager相關的東西
配置項4,resourcemanager的埠,主機名+埠號(IP+埠)
配置項5,resourcemanager調度器的埠
配置項6,resourcemanager.resource-tracker,埠
配置項7,埠
配置項8,埠
配置項9,日誌是否啟動
配置項10,日誌保留的時間長短(以秒為單位)
配置項11,日誌檢查的時間
配置項12,目錄
配置項13,目錄的前綴

<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.maprece.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>bigdata:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheler.address</name>
<value>bigdata:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>bigdata:18025</value>
</property> <property>
<name>yarn.resourcemanager.admin.address</name>
<value>bigdata:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>bigdata:18088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
mapred-site.xml
沒有mapred-site.xml,輸入vi mapred-按「TAB」發現有mapred-site.xml.template,對該文件進行復制
cp mapred-site.xml.template mapred-site.xml 配置項1,maprece的框架
配置項2,maprece的通信埠
配置項3,maprece的作業歷史記錄埠
配置項4,maprece的作業歷史記錄埠
配置項5,maprece的作業歷史記錄已完成的日誌目錄,在hdfs上
配置項6,maprece中間完成情況日誌目錄
配置項7,maprece的ubertask是否開啟

<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>maprece.jobtracker.http.address</name>
<value>bigdata:50030</value>
</property>
<property>
<name>maprece.jobhisotry.address</name>
<value>bigdata:10020</value>
</property>
<property>
<name>maprece.jobhistory.webapp.address</name>
<value>bigdata:19888</value>
</property>
<property>
<name>maprece.jobhistory.done-dir</name>
<value>/jobhistory/done</value>
</property>
<property>
<name>maprece.intermediate-done-dir</name>
<value>/jobhisotry/done_intermediate</value>
</property>
<property>
<name>maprece.job.ubertask.enable</name>
<value>true</value>
</property>
slaves

bigdata
hadoop-env.sh

JAVA_HOME=/usr/java/default/
格式化分布式文件系統(hdfs):hdfs namenode -format
成功的標志: INFO common.Storage: Storage directory /opt/hadoop-2.7.2/current/dfs/namehas been successfully formatted.
啟動Hadoop集群:/opt/hadoop-2.7.2/sbin/start-all.sh
驗證Hadoop集群是否正常啟動:
jps,系統中運行的java進程;
通過埠查看(關閉防火牆或者service iptables stop在防火牆的規則中開放這些埠):
http://bigdata:50070(http://http://192.168.42.209/:50070),分布式文件系統hdfs的情況
yarn http://bigdata:18088(http://http://192.168.42.209/:50070)

❽ 如何部署完全分布式hadoop

安裝流程

我們先來回顧上一篇我們完成的單節點的Hadoop環境配置,已經配置了一個CentOS 6.8 並且完成了java運行環境的搭建,Hosts文件的配置、計算機名等諸多細節。

其實完成這一步之後我們就已經完成了Hadoop集群的搭建的一半的工作了,因為我們知道通過虛擬機搭建所搭建的好處就是直接拷貝機器。多台同步進行操作,減少分別配置的時間消耗浪費。這也是虛擬化技術所帶來的優勢。

下面,咱們進去分布式系統的詳細操作過程。

1、首先需要在VMWare中將之前創建的單實例的計算機進行拷貝。

這里根據之前第一篇文章的規劃,我們至少需要再克隆出三台計算機,作為DataNode數據節點的數據存儲。之前的上一台機器作為Master主節點進行管理。

這里先來梳理一下整個Hadoop集群的物理架構圖,大家有一個直接的觀念和認識,上表中已經和明確了,總共需要5台伺服器來使用,四台用來搭建Hadoop集群使用,另外一台(可選)作為MySQL等外圍管理Hadoop集群來使用。

❾ 如何在虛擬機中搭建hadoop

方法/步驟
1
設置虛擬機和本機上的ip

2
可以清楚的看到多出現了兩個網卡選項,這里我們使用VMware Network Adapter VMnet1 就行了,然後將其與的一個禁用。啟用第一個之後,就要去給這個設置ip地址了,那麼這個ip地址應該設置為多少呢?這個可以根據你自己的喜好自己去設置就好了,只要是在有效的網關之內都行
下面是我設置的ip地址

這樣設置好了本機的ip地址之後呢,就應該去設置虛擬機的ip地址了,首先要保證虛擬機被本機的通訊方式為host-only模式,即,僅主機模式、
打開VmWare之後呢,去這里設置僅主機模式

-------------------------------------------------------
這里要注意一點,首先一個是虛擬機的ip地址為192.168.80.100和一個是我們自己電腦的上設置的Vmvare Network Adapter Vmnet1的ip地址為192.3168.80.1。設置好了之後打開虛擬機的小黑屏。

END
liniux系統配置
1

2
然後選擇第四項打開小黑屏。
打開小黑屏之後一定要記得讓網卡重新啟動一下,執行命令
Service network restart 來重啟網卡

END
修改主機名
1
下一步,修改主機名,為什麼要修改linux虛擬機的主機名呢?主要還是方便以後我們訪問。
現在我們可以在本機上面使用PieTTY這個工具來連接我們的虛擬機了,這樣我們就不用去虛擬機的小黑屏下面操作了,太方便了。

2
然後進進入了network這個文件的更改操作中去了
Vi進入該文件之後默認是不可修改的,只可以看,不可以修改,那麼按下鍵盤上面的i字母,就變成可以修改的狀態了

3
然後添加一行,HOSTNAME=hadoop,然後點擊鍵盤右上角Esc鍵,然後在英文輸入法下面輸入

4
接著輸入:wq 然後回車,保存修改。這樣,就永遠的把主機名給改成hadoop了,使用hostname來驗證主機名

END
主機名和ip地址進行綁定
1
首先為什麼要讓ip地址和主機名來進行綁定呢,狠簡單,每一台電腦在網路中的唯一標識就是本電腦的ip地址,首先可以確定ip地址是永遠不會重復的,那麼我們每次訪問的網路首頁其實就是在訪問網路主機的ip地址,如果你知道網路主機的ip地址,直接在網址欄里輸入ip地址,一樣的會訪問網路的首頁。
既然如此,我們以後直接用ip來訪問網頁就好了,幹嘛還要用www..com呢?首先,用ip來訪問也太麻煩了,並且也不便於記憶,所以我們將我們的主機名跟我們的ip地址綁定到一起,以後直接訪問我們的主機名就是相當於訪問我們的ip地址了。
然後來進行主機名和ip地址進行綁定的操作吧。
還是

2
關閉虛擬機的防火牆

直接執行service iptables stop命令來關閉防火牆

3
到這一步,hadoop設置已完畢,下一篇,將會詳細介紹如何設置hadoop源碼。。。敬請期待如何搭建hadoop分布式環境,怎樣快速搭建<二>

❿ vmware和雲伺服器能一起搭建hadoop集群嗎兩台虛擬機一台雲伺服器 該怎麼設置呢

理論上可以的,vmware虛擬機和雲伺服器其實和傳統物理伺服器用起來沒差別。但如果你說的雲伺服器是公有雲,是vmware在你的區域網,不推薦組合起來搭建hadoop,因為互聯網的網路延遲比本地高,集群會不穩,非要做的話,vmware虛擬機需要用dnat映射地址到公網

熱點內容
ios應用上傳 發布:2024-09-08 09:39:41 瀏覽:439
ios儲存密碼哪裡看 發布:2024-09-08 09:30:02 瀏覽:873
opensslcmake編譯 發布:2024-09-08 09:08:48 瀏覽:653
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:744
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:173
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:780
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995