完全分布式搭建
一、集群规划—>不同的守护进程运行那些结点:
Linux01 | Linux02 | Linux03 | |
---|---|---|---|
HDFS | DataNode | DataNode | DataNode |
NameNode | SecondaryNameNode | ||
Yarn | Namemanager | Nodemanager | Nodemanager |
RecourceManager | |||
Histrory | HistroryServer |
二、基本环境准备
CentOS 6.5
hadoop-2.7.6
jdk1.8
1、配置IP和映射主机名(如果是克隆出来的注意修改mac信息)
// 检查主机名
$ cat /etc/sysconfig/network
// 检查IP和DNS网关,配置静态IP
$ cat /etc/sysconfig/network-scripts/ifcfg-etn0
// 检查主机映射
$ cat /etc/hosts -->Linux
C:\Windows\System32\drivers\etc\hosts -->Windows
2、关闭防火墙及安全子系统
# service iptables stop
chkconfig iptables off
// 检查
# service iptables status
// 会显示有iptables:Firewall is not running
# chkconfig --list | grep iptables
// 关闭Linux子系统
# vi /etc/sysconfig/selinux
// 为了提高性能,可以考虑将启动方式调整为不带桌面
sudo vi /etc/inittab
id:3:initdefault:
3、创建相同的普通用户名和密码,配置sudo权限
$ tail -10 /etcpasswd
(1)、查看是否存在用户普通用户,没有就创建,稍后要保证3台账号密码相同
# useradd hadoop
# passed hadoop // # echo 123456 | passwd --stdin hadoop
配置hadoop的sudo权限
4、安装jdk
- 卸载自带jdk
# rpm -qa | grep jdk
# rpm --nodeps javaversion
- 在 /opt 下创建并修改权限
# mkdir /opt/modules /opt/software
# chmod -R 777 modules/software
- 安装
解压jdk到modules
$ tar -zxvf /opt/software/jdk-version /opt/modules/
配置环境变量
$ sudo vi /etc/profile # 添加一下内容
export JAVA_HOME = /opt/modules/jdk-version
export PATH = P A T H : PATH: PATH:JAVA_HOME/bin
生效配置:
$ source /etc/profile
检查Java环境变量
$ java -version
三、配置NTP
把Linux01作为整个集群的时间同步服务器
集群中所有其他服务器都来这台服务器Linux01同步时间
1、检查每台服务器所在的时区
$ date -R
如果不是 +0800 ,就要通过下面命令调整
# rm -rf /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2、安装ntp服务
# rpm -qa | grep ntp // 查看ntp软件是否已安装
如果没有执行下面命令:
yum -y install ntp
3、 修改ntp的配置文件(第一台learn01.bigdata.com)
# vi /etc/ntp.conf
4、同步服务器时间(Linux01.ibeifeng.com)
# ntpdate cn.pool.ntp.org // 操作这一步关闭ntp服务
5、启动ntp服务(默认开始)(Linux01.ibeifeng.com)
# service ntpd start
# chkconfig ntpd on
# chkconfig --list | grep nepd
# ntpdate ipaddres # 测试
6、如果另外两台的ntp的进程开启,那么需要关闭(对其他两台进行操作)
# service --status-all | grep ntpd // 查看ntpd服务时候开启
#chkconfig --list | grep ntpd // 查看ntpd服务随开机启动
如果服务可能开启,执行下面命令
# service ntpd stop
# chkfonfig ntpd off
7、第2、3台向第一台同步时间
# ntpdate Linux01.ibeifneg.com
8、制定周期性时间同步计划任务(PC2、PC3定时向PC1手动同步时间)
# crontb -e
【注意】如果趋势无法向第一台同步时间,请在交互窗口(可以同时设置3台时间)执行手动设置时间
# date -s
四、配置SSH免密钥登录
切换为普通用户hadoop使用普通用户操作;使用ssh登录的时候不需要用户名密码:
$ sbin /start-dfs.sh
每个节点都需要操作:
$ ssh -keygen
分发公钥(要向三台都发送)
$ ssh-copy-id PC1名
$ ssh-copy-id PC2名
$ ssh-copy-id PC3名
测试:
$ ssh PC2名
测试失败,先删除.ssh目录,重新做一遍:
$ rm -r ~/.ssh
五、安装hadoop
1、上传到服务器并解压hadoop的安装 包(.tar.gz)
$ tar -zxvf /opt/software/hadoop-version -C /opt/modules/
2、删除${HADOOP_HOME}/share/doc
$ rm -rf doc/
3、配置Java环境支持在${HADOOP_HOME}/etc/hadoop在hadoop-env.sh yarn-env.sh中配置JAVA_HOME=/opt/modules/jdk-version
4、core-site.xml
<!-- 指定第一台作为NameNode -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux01.ibeifeng.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.7.6/data</value>
</property>
5、hdfs-site.xml
<!-- 分布式副本数设置为3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- secondarynamenode主机名 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>linux02.ibeifeng.com:50090</value>
</property>
<!-- namenode的web访问主机名:端口号 -->
<property>
<name>dfs.namenode.http-address</name>
<value>linux01.ibeifeng.com:50070</value>
</property>
<!-- 关闭权限检查用户或用户组 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
6、mapred-site.xml
<!-- 指定mapreducer向yarn提交 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>linux01.ibeifeng.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>linux01.ibeifeng.com:19888</value>
</property>
7、yarn-site.xml
<!-- 指定哪个节点作为resourcemanager -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux03.ibeifeng.com</value>
</property>
<!-- 在mapreducer过程中启用shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 启用日志聚合 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保存时间 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
8、配置slaves
这里是引用
【注意事项】:
- slaves中配置集群所有的主机名;
- 所有节点上的配置文件内容都是一样的;
- 要按照集群规划配置所属进程;
- 配置普通用户,所有节点,有相同的账号密码。
分发
将Linux01的hadoop分发给其他两台虚拟机:
scp -r 把要复制的目录 其他主机:复制到的目录
五、格式化Namenode
在NameNode所在的服务器bigdata01上,进行格式化${HADOOP_HOME}/bin
$ bin/hdfs namenode -formart
【注意】:
- 先将PC1的hadoop配置目录分发到PC2和PC3
- 保证三台配置的内容一致
- 先确保三台没有格式化信息
- 最后格式化
六、启动进程
在PC1上使用如下启动HDFS
$ sbin/start-dfs.sh
在PC3上使用如下命令:
$ sbin/start-yarn.sh
在PC1上启动历史服务:
$ sbin/mr-jobhistory-deamon.sh start historyserver
停止进程:
在PC1上使用如下命令:
$ sbin/stop-dfs.sh
在PC3上使用入校命令停止YARN
$ sbin/stop-yarn.sh
【注意】:
修改任何配置文件,请先停止所有进程,修改完成,让后重新启动。
七、检查启动是否正常
3台上jps查看进程,参考之前的集群规划
PC1 |
---|
DataNode
NodeManager
jsp
NameNode
PC2 |
---|
DataNode
NodeManager
jsp
NodeManager
SecondaryNameNode
PC3 |
---|
DataNode
NodeManager
jsp
ResourceManager
测试:
需求:根据省份统计日志中网站PV
- 字段长度大于30才为有效记录
- url不为空为有效记录
- provinceId不为空为有效记录