hadoop2.x的集羣搭建

Hadoop集羣安裝

1.配置服務器

1個主節點:master(192.168.15.128),2個(從)子節點,slaver1(192.168.15.129),slaver2(192.168.15.130)

配置主節點名(192.168.15.128)

vi /etc/sysconfig/network

添加內容:

NETWORKING=yes

HOSTNAME=master

配置兩臺子節點名(192.168.15.129)和(192.168.15.130)

vi /etc/sysconfig/network

添加內容:

NETWORKING=yes

HOSTNAME=slaver1

 

vi /etc/sysconfig/network

添加內容:

NETWORKING=yes

HOSTNAME=slaver2

 

配置hosts

打開主節點的hosts文件,要將文件的前兩行註釋掉 (註釋當前主機的信息)並在文件中添加所有hadoop集羣的主機信息。

vi /etc/hosts

 

192.168.15.128   master

192.168.15.129   slaver1

192.168.15.130   slaver2

保存之後,將主節點的hosts分別拷貝到其他兩個子節點

scp /etc/hosts [email protected]:/etc/

scp /etc/hosts [email protected]:/etc/

然後分別執行(重啓服務器也可以不執行下面的語句): /bin/hostsname hostsname

例如:master上執行 /bin/hostsname master,使之生效。

2. 配置ssh無密碼訪問

生成公鑰密鑰對

在每個節點上分別執行:

ssh-keygen -t rsa

一直按回車直到生成結束

執行結束之後每個節點上的/root/.ssh/目錄下生成了兩個文件 id_rsa 和 id_rsa.pub

其中前者爲私鑰,後者爲公鑰

在主節點上執行:

cp id_rsa.pub authorized_keys

將子節點的公鑰拷貝到主節點並添加進authorized_keys

將兩個子節點的公鑰拷貝到主節點上,分別在兩個子節點上執行:

scp ~/.ssh/ id_rsa.pub root@master:/~/.ssh/id_rsa_slaver1.pub

scp ~/.ssh/ id_rsa.pub root@master:/~/.ssh/id_rsa_slaver2.pub

然後在主節點上,將拷貝過來的兩個公鑰合併到authorized_keys文件中去

主節點上執行:

cat id_rsa_slaver1.pub>> authorized_keys

cat id_rsa_slaver2.pub>> authorized_keys

 

最後測試是否配置成功

在master上分別執行

ssh slaver1

ssh slaver2

能正確跳轉到兩臺子節點的操作界面即可,同樣在每個子節點通過相同的方式登錄主節點和其他子節點也能無密碼正常登錄就表示配置成功。

 

這裏的配置方式可以有多種操作步驟,最終目的是每個節點上的/root/.ssh/authorized_keys文件中都包含所有的節點生成的公鑰內容。

將主節點的authorized_keys文件分別替換子節點的authorized_keys文件

主節點上用scp命令將authorized_keys文件拷貝到子節點的相應位置

scp authorized_keys root@slaver1:/root/.ssh/

scp authorized_keys root@slaver2:/root/.ssh/

 

3. 安裝jdk

卸載jdk

查看系統已經裝的jdk:

rpm -qa|grep jdk

卸載jdk:

rpm -e --nodepsjava-1.6.0-openjdk-javadoc-1.6.0.0-1.66.1.13.0.el6.x86_64

安裝JDK(三臺機器都要安裝)

安裝在同一位置/opt/java/jdk1.7.0_72

下載JDK

解壓JDK : tar -zxvf /opt/java/jdk-7u72-linux-x64.gz

配置環境變量, 編輯profile文件:

vi /etc/profile

 

在profile文件末尾添加以下代碼:

export JAVA_HOME=/opt/java/jdk1.7.0_72

export JRE_HOME=$JAVA_HOME/jre

export PATH=$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

保存後,使剛纔編輯的文件生效:

source /etc/profile

測試是否安裝成功:java –version

4.安裝hadoop

在master主機上安裝hadoop

安裝位置自定,例如安裝在/usr目錄下面

下載hadoop包,放在/usr目錄下,解壓hadoop

tar -zxvf /opt/hadoop/hadoop-2.6.4.tar.gz

 

在usr下面生成hadoop-2.6.4目錄

配置環境變量:

vi /etc/profile

在末尾添加:

export HADOOP_HOME=/usr/ hadoop-2.6.4

export PATH=$PATH:$HADOOP_HOME/bin

保存後使新編輯的profile生效:

source /etc/profile

5.配置hadoop

配置hadoop配置文件

需要配置的文件的位置爲/hadoop-2.6.4/etc/hadoop,需要修改的有以下幾個

hadoop-env.sh

yarn-env.sh

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

slaves

其中

hadoop-env.sh和yarn-env.sh裏面都要添加jdk的環境變量:

hadoop-env.sh中

# The java implementation to use.

export JAVA_HOME=/opt/java/jdk1.7.0_72

(紅色爲新添加的內容,其他的代碼是文件中原有的)

# The jsvc implementation to use. Jsvc isrequired to run secure datanodes

# that bind to privileged ports to provideauthentication of data transfer

# protocol. Jsvc is not required if SASL is configured for authentication of

# data transfer protocol usingnon-privileged ports.

#export JSVC_HOME=${JSVC_HOME}

 

yarn-env.sh中

 

# User for YARN daemons

exportHADOOP_YARN_USER=${HADOOP_YARN_USER:-yarn}

 

# resolve links - $0 may be a softlink

exportYARN_CONF_DIR="${YARN_CONF_DIR:-$HADOOP_YARN_HOME/conf}"

 

# some Java parameters

export JAVA_HOME=/opt/java/jdk1.7.0_72

(紅色爲新添加的內容,其他的代碼是文件中原有的)

 

 

core-site.xml中

<configuration>

       <property>

               <name>fs.defaultFS</name>

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

       </property>

       <property>

               <name>io.file.buffer.size</name>

                <value>131072</value>

       </property>

       <property>

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

               <value>file:/usr/temp</value>

       </property>

       <property>

               <name>hadoop.proxyuser.root.hosts</name>

                <value>*</value>

       </property>

       <property>

               <name>hadoop.proxyuser.root.groups</name>

                <value>*</value>

       </property>

</configuration>

hdfs-site.xml中

<configuration>

       <property>

                <name>dfs.namenode.secondary.http-address</name>

                <value>master:9001</value>

       </property>

       <property>

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

               <value>file:/usr/dfs/name</value>

       </property>

       <property>

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

               <value>file:/usr/dfs/data</value>

       </property>

       <property>

               <name>dfs.replication</name>

                <value>2</value>

       </property>

       <property>

               <name>dfs.webhdfs.enabled</name>

                <value>true</value>

       </property>

       <property>

               <name>dfs.permissions</name>

               <value>false</value>

       </property>

       <property>

               <name>dfs.web.ugi</name>

                <value>supergroup</value>

       </property>

</configuration>

mapred-site.xml中

<configuration>

       <property>

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

                <value>yarn</value>

       </property>

       <property>

               <name>mapreduce.jobhistory.address</name>

                <value>master:10020</value>

       </property>

       <property>

               <name>mapreduce.jobhistory.webapp.address</name>

                <value>master:19888</value>

       </property>

</configuration>

yarn-site.xml中

<configuration>

       <property>

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

               <value>mapreduce_shuffle</value>

       </property>

       <property>

               <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

               <value>org.apache.hadoop.mapred.ShuffleHandler</value>

       </property>

       <property>

                <name>yarn.resourcemanager.address</name>

                <value>master:8032</value>

       </property>

       <property>

               <name>yarn.resourcemanager.scheduler.address</name>

                <value> master:8030</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.resourcemanager.webapp.address</name>

                <value> master:8088</value>

       </property>

</configuration>

slaves中

slaver1

slaver2

拷貝hadoop安裝文件到子節點

主節點上執行:

scp -r /usr/hadoop-2.6.4 root@slaver1:/usr

scp -r /usr/hadoop-2.6.4 root@slaver2:/usr

拷貝profile到子節點

主節點上執行:

scp /etc/profile root@slaver1:/etc/

scp /etc/profile root@slaver2:/etc/

在兩個子節點上分別使新的profile生效:

source /etc/profile

 

 

格式化主節點的namenode

主節點上進入hadoop目錄

然後執行:

./bin/hadoop namenode –format

新版本用下面的語句不用hadoop命令了

./bin/hdfs namenode –format

 

提示:successfully formatted表示格式化成功

啓動hadoop

主節點上在hadoop目錄下執行:

./sbin/start-all.sh

 

主節點上jps進程有:

NameNode

SecondaryNameNode

ResourceManager

每個子節點上的jps進程有:

DataNode

NodeManager

如果這樣表示hadoop集羣配置成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章