centos7安装hadoop2.2.0集群-软件安装
1、需要软件列表:
JDK
HADOOP
2、JAVA环境安装,安装目录/export/servers/(每个节点都需要安装)
(1)首先解压jdk-7u71-linux-i586.tar.gz文件,tar -zxvf jdk-7u71-linux-i586.tar.gz
(2)将解压后的文件拷贝到/export/servers/目录下
(3)配置环境变量,vi /etc/profile/,添加如下内容:
export JAVA_HOME=/export/servers/java/jdk1.7.0_71
export JAVA_BIN=/export/servers/java/jdk1.7.0_71/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
(4)使配置文件生效:source /etc/profile
(5)判断是否安装成功:java -version
注:centos7会有一套自带的已安装的JDK,可先查看是否有自带JDK,有的话删除后再安装自己的JDK:
rpm -qa|grep jdk:
java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
rpm -qa|grep gcj:
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
libgcj-4.1.2-48.el5
删除:
[root@localhost ~]# yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
[root@localhost ~]# yum -y remove java java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
[root@localhost ~]# yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
[root@localhost ~]# yum -y remove libgcj-4.1.2-48.el5
3、hadoop安装:
(1)首先解压tar -zxvf hadoop-2.2.0.tar.gz到/export/servers/目录下
(2)配置环境变量,vi /etc/profile,添加如下内容:
export HADOOP_HOME=/export/servers/hadoop-2.2.0
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
保存,然后source /etc/profile使文件生效
(3)修改hadoop配置文件:
core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop_tmp</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
参数解释:
fs.defaultFS:默认的文件系统名称,默认端口号8020
hadoop.tmp.dir:hadoop的临时目录,其它目录会基于此目录
至于后面两个参数有什么作用,目前还不清楚,以后如果遇到的话会再补充一下。
hadoop-en.sh:
在文件末尾添加export JAVA_HOME=/export/servers/jdk1.6.0_25
hdfs-site.xml:
<configuration>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop-master:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop-slave:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop-master:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop-slave:50070</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/export/data/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/export/data/dfs</value>
</property>
</configuration>
参数说明:
dfs.nameservices:nameservice列表
dfs.ha.namenodes:一个NN列表,用来配置namenode节点
dfs.replication:数据块的副本数
dfs.namenode.name.dir:nn存储文件的地方
dfs.datanode.data.dir:hdfs存放数据的地方
mapred-site.xml:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop-master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop-master:19888</value>
</property>
<property>
<name>mapreduce.map.output.compress</name>
<value>false</value>
</property>
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.GzipCodec</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/user</value>
</property>
slaves:
hadoop-slave
yarn-env.sh:
添加export JAVA_HOME=/export/servers/jdk1.6.0_25
yarn-site.xml:
<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>hadoop-master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop-master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop-master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop-master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop-master:8088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/export/data/yarn/logs</value>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/app-logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.scheduler.fair.allocation.file</name>
<value>/export/servers/hadoop-2.2.0/etc/hadoop/fair-scheduler.xml</value>
</property>
<property>
<name>yarn.scheduler.assignmultiple</name>
<value>true</value>
</property>
<property>
<name>yarn.scheduler.fair.allow-undeclared-pools</name>
<value>false</value>
</property>
<property>
<name>yarn.scheduler.fair.locality.threshold.node</name>
<value>0.1</value>
</property>
<property>
<name>yarn.scheduler.fair.locality.threshold.rack</name>
<value>0.1</value>
</property>
以上,配置已经完成,现在启动hadoop,第一次启动需要初始化:
hdfs namenode -format
进入$HADOOP_HOME/sbin目录,sh start-all.sh
启动后,在浏览器输入以下地址测试:
http://hadoop-master:8088
http://hadoop-master:50070