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
./bin/hdfs namenode –format
提示:successfully formatted表示格式化成功
啓動hadoop
主節點上在hadoop目錄下執行:
./sbin/start-all.sh
主節點上jps進程有:
NameNode
SecondaryNameNode
ResourceManager
每個子節點上的jps進程有:
DataNode
NodeManager
如果這樣表示hadoop集羣配置成功