--------------------------------↓集群搭建步骤↓----------------------------------
ip:192.168.2.201 dns:192.168.2.2
--------------------------↓克隆虚拟机步骤↓------------------------------
1. vim /etc/sysconfig/network-scripts/ifcfg-eth0 修改ip等
克隆出来的虚拟机需要删除uuid和hwaddr
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPADDR=192.168.2.201
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
DNS1=192.168.2.2
GATEWAY=192.168.2.2
NAME="System eth0"
vim /etc/hosts 配置映射
192.168.2.201 hadoop01
192.168.2.202 hadoop02
192.168.2.203 hadoop03
192.168.2.204 hadoop04
-----------------------------------------------------------------------------------
2. 修改主机名
vim /etc/sysconfig/network
网卡地址:
vim /etc/udev/rules.d/70-persistent-net.rules 删除eth0(dd) 改eth1为eth0
--------------------------↑克隆虚拟机步骤↑------------------------------
-----------------------------------------------------------------------------------
3. 修改用户权限 root vi /etc/sudoers
root ALL=(ALL) ALL
mx ALL=(ALL) ALL
-----------------------------------------------------------------------------------
4. 关闭防火墙
sudo service iptables stop
chkconfig iptables off 防火墙开机自闭
-----------------------------------------------------------------------------------
5. sudo vi /etc/selinux/config
SELINUX=disabled
-----------------------------------------------------------------------------------
6. 修改启动级别为3
sudo vi /etc/inittab
尾行数字改为3
reboot
-----------------------------------------------------------------------------------
7. [mx@hadoop01 ~]$:设置免密登录
各个节点:
1)生成密钥对
ssh-keygen 回车*3
2)发送公钥
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
ssh-copy-id hadoop04
3)测试免密
ssh hadoop01
ssh hadoop02
ssh hadoop03
-----------------------------------------------------------------------------------
8. 安装jdk
1)查看是否安装jdk
rpm -qa | grep -i jdk
2)卸载jdk
rpm -e 程序
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
3)传文件、解压
tar -zxvf tar.gz -C 目录
tar -zxvf jdk-8u73-linux-x64.tar.gz -C 存放路径(例:cd->mkdir apps-> apps/)
4)配置环境变量
添加一个软链接 便于版本更新 不用重新配置环境变量 只需改变链接指向的方向
cd /home/mx/apps
ln -s jdk1.8.0_73 jdk
vim /etc/profile
尾行加上:
export JAVA_HOME=/home/mx/apps/jdk
export PATH=$JAVA_HOME/bin:$PATH
加载环境变量
source /etc/profile
查看jdk版本
java -version
================================================================
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
================================================================
-----------------------------------------------------------------------------------
9. 时间同步:
[mx@hadoop01 ~]$ sudo ntpdate ntp1.aliyun.com
-----------------------------------------------------------------------------------
10. 上传hadoop压缩包
rz hadoop-2.7.6.tar.gz
解压
tar -xvzf hadoop-2.7.6.tar.gz -C apps/
修改配置文件:
1)cd /home/mx/apps/hadoop-2.7.6/etc/hadoop
vi hadoop-env.sh
export JAVA_HOME=/home/mx/apps/jdk
2)cd /home/mx/apps/hadoop-2.7.6/etc/hadoop
vi core-site.xml
添加配置文件
=================================================
前提: hadoop01为namenode节点
hadoop02为secondarynamenode节点
hadoop03为ResourceManager节点
=================================================
=========================================================================================
<configuration>
<property>
<!--配置的hdfs的主节点namenode的通信地址 url mysql:jdbc://localhost:3306 hdfs://主节点的主机名:端口号
默认端口号9000-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<!--配置hadoop启动和运行过程中的相关数据 数据是hadoop的核心数据 不能丢失 这个目录一定要配置 如果不配置则在
/tmp-->
<name>hadoop.tmp.dir</name>
<value>/home/mx/data/hadoopdata</value>
</property>
</configuration>
=========================================================================================
3)cd /home/mx/apps/hadoop-2.7.6/etc/hadoop
sudo vi hdfs-site.xml
=========================================================================================
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/mx/data/hadoopdata/name</value>
<description>配置的是namenode的相关数据信息存储的目录</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/mx/data/hadoopdata/data</value>
<description>datanode 的数据存储目录</description>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>HDFS 的数据块的副本存储个数</description>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop02:50090</value>
<description>secondarynamenode 运行节点的信息,和 namenode 不同节点</description>
</property>
</configuration>
=========================================================================================
4)cd /home/mx/apps/hadoop-2.7.6/etc/hadoop
.template为临时文件
cp mapred-site.xml.template mapred-site.xml
sudo vi mapred-site.xml
=========================================================================================
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>mapreduce的程序运行的时候使用的资源调度框架 mersos 我们这里使用yarn做资源调度</description>
</property>
=========================================================================================
5)yarn-site.xml 配置的是yarn的相关信息
sudo vi yarn-site.xml
=========================================================================================
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop03</value>
<description>制定resourcemanager的节点</description>
</property>
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <description>YARN 集群为 MapReduce 程序提供的 shuffle 服务</description>
</property>
6)vi slaves
添加以下内容 不要多余空格换行!!!
=========
hadoop01
hadoop02
hadoop03
hadoop04
=========
----------------------------------
bin:hadoop的相关命令的脚本
sbin:hadoop的启动 停止脚本
etc:hadoop的配置文件
lib:hadoop的所有的依赖包
share:公共的参考文档 或 jar包
----------------------------------
-----------------------------------------------------------------------------------
11. 1)配置环境变量
vi /etc/profile
export HADOOP_HOME=/home/mx/apps/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2)将hadoop的安装包远程发送
scp -r /home/mx/apps/hadoop-2.7.6 hadoop02:/home/mx/apps/
scp -r /home/mx/apps/jdk1.8.0_73 hadoop02:/home/mx/apps/
scp /etc/profile hadoop02:/etc
3)cd /home/mx/apps
①全部创建软链接
ln -s hadoop-2.7.6 hadoop
ln -s jdk1.8.0_73 jdk
②加载环境变量
source /etc/profile
③查看hadoop版本
hadoop version
4)格式化namenode 在namenode所在节点执行 即hadoop01
hadoop namenode -format
注意:格式化一定要成功之后才可以启动 如果不成功 修正错误 再次执行格式化命令直到成功
格式化成功两次datanode无法启动的解决办法:
================================================================
1.关闭集群 |
stop-dfs.sh stop-yarn.sh |
2.删除各个节点上的data目录----配置文件hdfs-site.xml中指定的目录 |
rm -rf data |
3.重新格式化 |
hadoop namenode -format |
4.启动集群 |
start-dfs.sh start-yarn.sh |
================================================================
5)启动集群
任意节点:start-dfs.sh
yarn主节点:start-yarn.sh
启动yarn:最好在yarn的主节点执行 否则会造成resourcemanager启动失败
网页访问验证:
hdfs的网页: namenode主机名:50070
hadoop01:50070
yarn的网页: resourcemanager的主机名:8088
hadoop03:8088
6)关闭集群
任意节点:stop-dfs.sh
最好yarn的主节点:stop-yarn.sh
再次进行启动的时候 不需要再进行格式化
补充:
1)集群启动过程中某些进程启动不了
1)停掉重启 暴力
stop-dfs.sh
stop-yarn.sh
2)缺失哪一个进程 启动哪一个进程
hadoop-daemon.sh 单独启动hdfs的相关进程(namenode datanode secondarynamenode)
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
yarn-daemon.sh 单独启动yarn的相关进程的(resourcemanager nodemanager)
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
如果单独启动或重启之后仍然启动不了,这个时候查看日志文件:
starting datanode, logging to
/home/mx/apps/hadoop-2.7.6/logs/hadoop-hadoop-datanode-hadoop01.out
hadoop(hdfs模块 该日志文件启动的进程的归属模块)-hadoop(集群启动的linux用户名)-datanode(启动的哪一个进程)-hadoop01(进程启动的节点的主机名).log
每个节点上启动的相关进程的日志文件 只保存在本节点
判断一个集群启动是否有问题?最终肯定日志文件最准
--------------------------------↑集群搭建步骤↑----------------------------------