hadoop-2.4.0完全分布式集群搭建

jopen 11年前發布 | 45K 次閱讀 分布式/云計算/大數據 Hadoop

新版本日志系統預計存儲在TB級別,并且需要統計分析一些數據(離線統計,非即時),所以選擇廉價linux服務器搭建一個hadoop集群,1個namenode,1個resourcemanager(mapreduce新框架yarn,去掉了原來的 jobtracker和tasktracker,取而代之的是ResourceManager, ApplicationMaster 與 NodeManager),3個datanonde。

1.配置hosts

各linux版本hosts文件位置可能不同,我的是在 /etc/hosts,在master上編輯之:

172.17.0.1    master

172.17.0.2    resorucemanager

172.17.0.3    datanode1

172.17.0.4    datanode2

172.17.0.5    datanode3

然后copy到其余四臺服務器,然后分別執行 /bin/hostsname hostsname

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

2.配置ssh

a.創建hadoop用戶

注意:hadoop有兩種運行模式,安全模式和非安全模式。安裝模式是以指定在健壯的,基于身份驗證上運行的,如果無需運行在非安全模式下,可以直接使用root用戶。

安全模式下要確保hdfs和yarn以不同的用戶身份運行,如hdfs和yarn,還有確保mapreduce jobhistory server以user mapred運行。推薦這三個身份使用一個組名為hadoop

用戶:組
運行進程
hdfs:hadoop NameNode, Secondary NameNode, Checkpoint Node, Backup Node, DataNode
yarn:hadoop ResourceManager, NodeManager
mapred:hadoop MapReduce JobHistory Server

首先在master主機上創建用戶hdfs,執行操作:

groupadd hadoop

useradd -g hadoop hdfs

然后在其余四臺服務器上創建用戶yarn,執行操作:

groupadd hadoop

useradd -g hadoop yarn

最后在MapReduce JobHistory服務器上(我的為resourcemanager)創建用戶mapred

groupadd hadoop

useradd -g hadoop mapred

b. 配置master無密碼ssh各服務器

在master執行操作:

su hdfs

ssh-keygen -t rsa,然后一直回車

在/home/hdfs/.ssh/目錄下生成了兩個文件 id_rsa 和 id_rsa.pub

cat id_rsa.pub > ./authorized_keys

然后復制到其他服務器(若沒有.ssh文件夾需要自行創建)

scp authorized_keys yarn@resourcemanager:/home/yarn/.ssh/

scp authorized_keys mapred@resourcemanager:/home/yarn/.ssh/

scp authorized_keys yarn@datanode1:/home/yarn/.ssh/

scp authorized_keys yarn@datanode2:/home/yarn/.ssh/

scp authorized_keys yarn@datanode3:/home/yarn/.ssh/

驗證能否無密碼ssh,在master服務器上執行操作:

ssh hdfs@master

ssh yarn@resourcemanager

ssh mapred@resourcemanager

ssh yarn@datanode1

ssh yarn@datanode2

ssh yarn@datanode3

注意:第一次可能會提示輸入yes or no,之后就可以直接ssh到其他主機上去了。

3.配置jdk和hadoop環境變量

版本:jdk1.7.0_55 hadoop-2.4.0

下載并解壓到

/opt/tools/jdk1.7.0_55 

/opt/hadoop-2.4.0

編輯 /etc/profile,在最后加上

export JAVA_HOME=/opt/tools/jdk1.7.0_55
export JRE_HOME=$JAVA_HOME/jre
export HADOOP_HOME=/opt/hadoop-2.4.0
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PATH

保存退出,執行 source /etc/profile 生效

執行java -version 和 hadoop version,能看到版本號那么環境配置ok

4.配置hadoop

配置文件在hadoop-2.4.0/etc/hadoop/ 目錄下

a.在yarn-env.sh 和hadoop-env.sh文件中加上jdk路徑

export JAVA_HOME=/opt/tools/jdk1.7.0_55

b.core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
        <final>true</final>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/tmp/hadoop-${user.name}</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>

c.hdfs-site.xm

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

d.mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <description>Execution framework set to Hadoop YARN.</description>
    </property>

</configuration>

e.yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>jobtracker:9001</value>
        <description>The address of the applications manager interface in the RM.</description>
    </property>

    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>jobtracker:18030</value>
        <description>The address of the scheduler interface,in order for the RM to obtain the resource from scheduler</description>
    </property>

    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>jobtracker:18025</value>
        <description>The address of the resource tracker interface for the nodeManagers</description>
    </property>

    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>jobtracker:18035</value>
        <description>The address for admin manager</description>
    </property>

    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>jobtracker:18088</value>
        <description>The address of the RM web application.</description>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

f.slaves

在該文件中添加

datanode1
datanode2
datanode3

注意:上面配置文件中出現的目錄需要自己創建。配置文件需要復制到各個服務器上,并且個服務器目錄結構要相同。

5.運行hadoop

在master上執行:

hdfs namenode -format

/opt/hadoop-2.4.0/sbin/start-dfs.sh

在resourcemanager上執行:

/opt/hadoop-2.4.0/sbin/start-yarn.sh

若一切順利,在各服務器上輸入jps,

master顯示:

30739 Jps
9547 NameNode
9746 SecondaryNameNode

resourcemanager顯示:

2917 Jps
27910 ResourceManager

datanode顯示:

24334 Jps
1594 NodeManager
1027 DataNode

至此,一個完全分布式hadoop集群搭建成功

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!