1、版本选择
原则:不选太旧的版本,也不选最新的版本。这里选择hadoop2.7.6
2、集群规划
各个角色在集群中各个节点分配
3、依赖准备
三台虚拟机,都必须有一个普通用户,用户名和密码均统一。这里用户名和密码均设置为:hadoop
1)ip
hadoop01---192.168.191.201
hadoop02---192.168.191.202
hadoop03---192.168.191.203
2)主机名
3)主机映射
/etc/hosts
4)为普通用户配置sudoers权限
切换root用户 su root
vi /etc/sudoers
hadoop ALL=(ALL) ALL
切换为普通用户 su - hadoop
5)关闭防火墙
sudo service iptables stop
6)关闭selinux
sudo vi /etc/selinux/config
SELINUX=disabled
7)修改系统启动级别,改为3
sudo vi /etc/inittab
id:3:initdefault:
8)配置免密登陆
免密登陆是用户级别的设置。
三台机器都是普通用户,用户统一。
生成秘钥:ssh-keygen
远程拷贝秘钥:ssh-copy-id hadoop01 ssh-copy-id hadoop02 ssh-copy-id hadoop03
测试:
ssh hadoop01
exit
ssh hadoop02
exit
ssh hadoop03
exit
9)三台机器进行时间同步
搭建的集群,必须都要时间同步。
1)手动同步:date -s ''
2)搭建时间同步服务器
使用现成的:sudo ntpdate ntp1.aliyun.com
4、集群安装
先在一个节点上配置完成之后,再远程发送到其他节点。
1)上传jdk安装包
2)解压jdk
tar -zxvf jdk-8u73-linux-x64.tar.gz
3)配置jdk的环境变量
sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
export PATH=$PATH:$JAVA_HOME/bin
生效环境变量:source /etc/profile
执行:java -version
4)上传hadoop安装包
5)解压hadoop安装包
tar -xvzf hadoop-2.7.6.tar.gz
6)配置hadoop环境变量
sudo vi /etc/profile
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
生效环境变量:source /etc/profile
验证:hadoop version
7)修改配置文件
/home/hadoop/apps/hadoop-2.7.6/etc/hadoop
①hadoop-env.sh hadoop的依赖环境配置文件
修改:export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
②core-site.xml hadoop的公共配置项
hdfs的访问url: hdfs://namenode节点的主机名/ip:端口号
//文件系统的访问的入口
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
//hadoop的相关数据存放目录 不给默认/tmp
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoopdata</value>
</property>
③hdfs-site.xml hdfs的相关配置
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/hadoopdata/name</value>
<description>namenode的相关数据存储目录</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/hadoopdata/data</value>
<description>datanode 的数据存储目录</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>HDFS 的数据块的副本存储个数</description>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop02:50090</value>
<description>secondarynamenode 运行节点的信息,和 namenode 不同节点</description>
</property>
④mapred-site.xml mapreduce相关配置文件
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
指定mapreduce的资源调度框架
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
⑤yarn-site.xml
//指定yarn的主节点
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop03</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>YARN 集群为 MapReduce 程序提供的 shuffle 服务</description>
</property>
⑥slaves文件 配置从节点的(datanode nodemanager)
从节点的主机名 一行一个 不能有多余的空格或换行
hadoop01
hadoop02
hadoop03
8)远程发送到其他节点
先到对应的节点上创建对应的目录
1)jdk的安装包
scp -r jdk1.8.0_73 hadoop02:/home/hadoop/apps/
scp -r jdk1.8.0_73 hadoop03:/home/hadoop/apps/
2)hadoop的安装包
scp -r hadoop-2.7.6 hadoop02:/home/hadoop/apps/
scp -r hadoop-2.7.6 hadoop03:/home/hadoop/apps/
3)/etc/profile
sudo scp /etc/profile hadoop02:/etc/
sudo scp /etc/profile hadoop03:/etc/
另两个节点执行:
source /etc/profile
验证:
java -version
hadoop version
9)格式化hdfs文件系统
namenode节点执行
hadoop namenode -format
18/11/07 17:20:10 INFO common.Storage: Storage directory /home/hadoop/data/hadoopdata/name has been successfully formatted.
如果报错,修正错误,再重新格式化;如果格式化成功了,一定不要重新格式化。
10)启动
启动hdfs,任意一个节点执行:start-dfs.sh
启动yarn,在yarn的主节点执行:start-yarn.sh
网页验证:
hdfs的网页:
http://namenode的主机名:50070
http://hadoop01:50070
yarn的网页:
http://resourcemanager的主机:8088
http://hadoop03:8088
注意:关闭虚拟机 先关闭集群
关闭hdfs:stop-dfs.sh
关闭yarn:stop-yarn.sh
重新启动集群:关闭防火墙
start-dfs.sh
start-yarn.sh