| NameNode DataNode NodeManager ResourceManager |
SecondaryNameNode DataNode NodeManager |
DataNode NodeManager |
|---|---|---|
| hadoop1 | hadoop2 | hadoop3 |
基础准备
ping www.baidu.comyum install -y epel-releaseyum install -y net-toolsyum install -y vim
所有机器修改hostname和ip
hostname hadoop1 #临时修改hostname
vi /etc/sysconfig/network #修改配置文件后,即使重启hostname也不会变
vi /etc/sysconfig/network-scripts/ifcfg-eth0 #所有机器修改IP(按量计费的阿里云每次重启会变更公网IP,私网IP不会变。所以这个文件不变更也行)
DEVICE=eth0
HWADDR=00:0c:29:d2:4f:9c
TYPE=Ethernet
UUID=b3239952-b75f-425a-ad51-6214bdf84c74
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static #静态ip
IPADDR=192.168.23.2 #主要是黄色的这两行
NETMASK=255.255.255.0
IPV6INIT=no
USERCTL=no
service network restart #变更完IP后要重启网卡生效
所有机器修改hosts
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.93.134 hadoop2
172.16.35.251 hadoop3
172.16.93.133 hadoop1
172.16.93.133 iZbp14q3an712bplg9gt33Z iZbp14q3an712bplg9gt33Z
倒数2、3、4行是新加的,用阿里云的服务器搭建hadoop,最后一行必须是 默认配置中的最后一行。
所有机器关闭防火墙
**CentOS 6.x
service iptables stop #临时关闭iptables
chkconfig iptables off #关闭iptables开机自启
setenforce 0零 #临时关闭selinux
vi /etc/selinux/config #里改成面的SELINUX=disabled(小写) 即使重启selinux也不会开启
**CentOS 7.x
systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #关闭开机自动启动
setenforce 0零 #临时关闭selinux
vi /etc/selinux/config #里改成面的SELINUX=disabled(小写) 即使重启selinux也不会开启
所有机器配置ssh
ssh-keygen -t rsa #三个回车 生成id_rsa 和id_rsa.pub
ssh-copy-id -i root@hadoop1
ssh-copy-id -i root@hadoop2
ssh-copy-id -i root@hadoop3
三台机器对时操作
参考linux里
所有机器安装java (不建议rpm删除java,因为可能会有依赖,安装java建议安装tar包,解压就可用)
java -version
rpm -qa | grep jdk
java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64
java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
yum -y remove java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64
yum -y remove java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
rpm -e #删除
vim /etc/profile
#java
export JAVA_HOME=/opt/egg/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
scp -r /opt/egg/jdk1.8.0_191 root@hadoop2:/opt/egg
scp -r /opt/egg/jdk1.8.0_191 root@hadoop3:/opt/egg
其他两台机器修改/etc/profile并source
安装hadoop
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/egg
vim /etc/profile
##HADOOP_HOME
export HADOOP_HOME=/opt/egg/hadoop-2.7.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
etc/hadoop目录下
vi hadoop-env.sh
vi yarn-env.sh
vi mapred-env.sh
以上三个文件加export JAVA_HOME=/opt/egg/jdk1.8.0_191
mkdir -p /opt/egg/hadoop-2.7.2/data/tmp
三台都执行
core-site.xml
<!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://hadoop1:9000</value></property><!-- 指定Hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/egg/hadoop-2.7.2/data/tmp</value></property>
hdfs-site.xml
<!-- 指定hdfs复制几份 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!— snn web端访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:50090</value>
</property>
<!-- 数据存放的目录 linux目录,配置hadoop.tmp.dir后 以下三者数据就存到hadoop.tmp.dir了,不再需要配置以下三者了。当然配置也行
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/egg/hadoop-2.7.2/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/egg/hadoop-2.7.2/data/datanode</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///opt/egg/hadoop-2.7.2/data/secondary</value>
</property>
-->
<!-- datanode和namenode的心跳时间,默认是五分钟和三秒 -->
<!--datanode进程死亡或者网络故障造成datanode无法与namenode通信,
namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。
HDFS默认的超时时长为
10分钟+30秒= 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval-->
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>300000</value>
<description>毫秒</description>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
<description>秒</description>
</property>
<!-- 1、SecondaryNameNode每隔一小时执行一次fsimage和Edits的合并 -->
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</property>
<!-- 2、一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次合并操作
<property>
<name>dfs.namenode.checkpoint.txns</name>
<value>1000000</value>
<description>操作动作次数</description>
</property>
<property>
<name>dfs.namenode.checkpoint.check.period</name>
<value>60</value>
<description> 1分钟检查一次操作次数</description>
</property >
-->
yarn-site.xml
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- 日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志聚合保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
mapred-site.xml
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
conf目录下
vi slaves
hadoop1
hadoop2
hadoop3
scp -r /opt/egg/hadoop-2.7.2 root@hadoop2:/opt/egg
scp -r /opt/egg/hadoop-2.7.2 root@hadoop3:/opt/egg
修改其余两台的 /etc/profile并source
bin/hadoop namenode -format
sbin/start-all.sh
sbin/mr-jobhistory-daemon.sh start historyserver #开启jobhistory,使得19888可以访问
jps
测试mr
随便上传一个文件到hdfs
hadoop jar /opt/egg/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /kms.sh /out3
若执行不成功或卡住 可到/opt/egg/hadoop-2.7.2/logs/yarn-root-resourcemanager-hadoop1.log 查看日志
1、配置历史服务器 19888:为了查看程序的历史运行情况
2、配置日志聚合:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。在yarn界面可以查看log
