一、 安装centos7并配置集群时间
- 设置时区并通过网络自动同步时间
- 保证集群的所有时间一致
- 通过VM虚拟机安装的centos7
- centos7下载地址下载CentOS-7-x86_64-DVD-2003.iso版本
二、增加用户和用户权限
- 增加用户
useradd wangchao
- 修改密码
passwd wangchao
-
赋予权限
1)编辑vim /etc/sudoers
2) 增加
wangchao ALL=(ALL) NOPASSWD: ALL
三、修改主机名(每个节点对应各自的主机名)
hostnamectl --static set-hostname hadoop101
三、修改静态ip
- 编辑文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
- 修改BOOTPROTO="static"也就是将dhcp改为static
- 修改ONBOOT=“yes” 意思是将网卡设置 为开机启用
- 同时在下方添加
IPADDR=192.168.88.101 #静态IP
GATEWAY=192.168.88.2 #默认网关(通过netstat -rn查看)
NETMASK=255.255.255.0 #子网掩码
DNS1=192.168.0.1 #DNS 配置
DNS2=8.8.8.8 #谷歌地址
- 重启网络
service network restart
四、关闭防火墙
- 查看防火墙状态
firewall-cmd --state
- 停止firewall
systemctl stop firewalld.service
- 禁止firewall开机启动
systemctl disable firewalld.service
五、克隆3份虚拟机并修改各自的ip和主机名
从第六节开始是用xshell登录wangchao账户操作
- 注意:使用创建完全克隆
六、修改hosts
- 编辑vim /etc/hosts,增加:
192.168.88.101 hadoop101
192.168.88.102 hadoop102
192.168.88.103 hadoop103
并且尝试一下是否可以ping
- window修改hosts文件 增加一样的
- 三个机器都要配置
七、配置免密登录
- 一般配置到ResourceManage的机器上(在hadoop102上配置即可)
- 生成公钥和私钥
ssh-keygen -t rsa
- 将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop101
ssh-copy-id hadoop102
ssh-copy-id hadoop103
八、安装JDK和Hadoop
JDK版本1.8,Hadoop版本2.7.2 下载地址,失效联系,提取码:m04o
下面基本上都是在hadoop102上配置,如需配置所有节点有说明
-
创建soft和module目录
1)创建目录sudo mkdir /opt/soft /opt/module
2)赋予wangchao用户权限
sudo chown -R wangchao /opt/soft /opt/module
-
上传jdk和hadoop到soft目录,并解压到module目录
-
配置jdk和hadoop环境变量 (所有节点都需要配置)
1)编辑 /etc/profile文件sudo vim /etc/profile
增加
JAVA_HOME=/opt/module/jdk1.8.0_121 HADOOP_HOME=/opt/module/hadoop-2.7.2 PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export PATH JAVA_HOME HADOOP_HOME
2)刷新
source /etc/profile
3)测试
输入jps和hadoop fs
-
编写xsync和xcall脚本放在/home/wangchao/bin 目录下,bin目录需要创建
1)xsync脚本#!/bin/bash #校验参数是否合法 if(($#==0)) then echo 请输入要分发的文件! exit; fi #获取分发文件的绝对路径 dirpath=$(cd `dirname $1`; pwd -P) filename=`basename $1` echo 要分发的文件的路径是:$dirpath/$filename #循环执行rsync分发文件到集群的每条机器 for((i=101;i<=103;i++)) do echo ---------------------hadoop$i--------------------- rsync -rvlt $dirpath/$filename wangchao@hadoop$i:$dirpath done
2)xcall脚本
#!/bin/bash #在集群的所有机器上批量执行同一条命令 if(($#==0)) then echo 请输入您要操作的命令! exit fi echo 要执行的命令是$* #循环执行此命令 for((i=101;i<=103;i++)) do echo ---------------------hadoop$i----------------- ssh hadoop$i $* done
3)赋予权限
chmod u+x xsync chmod u+x xcall
4)输入xcall和xsync测试是否可用
-
配置Hadoop(配置文件都在/opt/module/hadoop-2.7.2/etc/hadoop下)
1)配置core-site.xmlvim core-site.xml
修改为
<configuration> <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:9000</value> </property> <!-- 指定Hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> </configuration>
2)配置hdfs-site.xml
vim hdfs-site.xml
修改为
<configuration> <!-- 指定Hadoop辅助名称节点主机配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop103:50090</value> </property> </configuration>
3)配置yarn-site.xml
vim yarn-site.xml
修改为
<configuration> <!-- reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop102</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> </configuration>
4)配置mapred-site.xml
mv mapred-site.xml.template mapred-site.xml vim mapred-site.xml
修改为
<configuration> <!-- 指定mr运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop101:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop101:19888</value> </property> <!--第三方框架使用yarn计算的日志聚集功能 --> <property> <name>yarn.log.server.url</name> <value>http://hadoop101:19888/jobhistory/logs</value> </property> </configuration>
-
分发文件,JDK和Hadoop(在配置免密登录的机器上执行,我的是hadoop102)
1)分发JDKxsync /opt/module/jdk1.8.0_121/
2)分发Hadoop
xsync /opt/module/hadoop-2.7.2/
执行过后在所有节点上的 /opt/module/ 下都应有jdk和hadoop文件
-
集群说明及配置
1)Hadoop各节点说明hadoop101 hadoop102 hadoop103 datanode datanode datanode nodemanager nodemanager nodemanager namenode resourcemanager secondarynamenode JobHistoryServer
2)格式化namenode,在hadoop101上执行
hadoop namenode -format
3)配置集群
vim slaves
修改为:
hadoop101 hadoop102 hadoop103
注意不要有空行
4)配置.bashrc,注意一定要先cd(所有节点都需要配置)
cd vim .bashrc
增加
source /etc/profile
输入xcall jps测试是否成功
九、启动Hadoop
- 启动hafs(hadoop102上执行)
start-dfs.sh
- 启动yarn(hadoop102上执行)
start-yarn.sh
- 启动jobhistory(hadoop101上执行)
mr-jobhistory-daemon.sh start historyserver
- 查看是否启动成功(hadoop102上执行)
xcall jps
显示如下证明启动正常
[wangchao@hadoop102 hadoop-2.7.2]$ xcall jps
要执行的命令是jps
---------------------hadoop101-----------------
8050 NodeManager
8199 Jps
7962 JobHistoryServer
7851 DataNode
7725 NameNode
---------------------hadoop102-----------------
9908 DataNode
10586 Jps
10155 ResourceManager
10283 NodeManager
---------------------hadoop103-----------------
59186 NodeManager
58947 DataNode
59331 Jps
59080 SecondaryNameNode
否则去查看日志,日志文件目录/opt/module/hadoop-2.7.2/logs
- WEB页面
http://hadoop102:8088/
http://hadoop101:50070/
如有错误,请指出,谢谢