Hadoop完全分布式搭建

准备:

一、虚拟机
Windwos:VMware Workstation Pro

安装:
** 创建空虚拟机
** 安装虚拟机时的资源规划
Linux版本:Centos 6.8 或 CentOS 7.2 1611内核
内存:
linux01:
内存:4G
CPU:1个 2core
linux02:
内存:2G
CPU:1个 1core
linux03
内存:2G
CPU:1个 1core

** 虚拟机网络设置
** $ su - root
输入密码
** # vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.216.20
NETMASK=255.255.255.0
GATEWAY=192.168.216.2
DNS1=192.168.216.2
DNS2=8.8.8.8
BOOTPROTO=static
ONBOOT=yes
** 重启网卡服务
CentOS6.8: # service network restart
CentOS7.2: # systemctl restart network.service
** CRT远程连接Linux
** 禁用SELinux
** Selinux:linux安全管理工具
** # vi /etc/sysconfig/selinux
** 编辑改动如下:
SELINUX:disable
** 禁用防火墙
** CentOS 6.8
iptables
# service iptables stop
# chkconfig iptables off
** CentOS 7.2
# systemctl stop firewalld.service
# systemctl disable firewalld.service
** ping外网测试
** visudo
改动如下:
admin ALL=(ALL) NOPASSWD: ALL
** 修改主机名(下节课讲解)
CentOS 6.8:
$ sudo vi /etc/sysconfig/network
CentOS 7.2:
$ sudo vi /etc/hostname
** 修改ip与主机名的映射关系
$ sudo vi /etc/hosts

192.168.216.20 linux01
192.168.216.21 linux02
192.168.216.22 linux03
** 安装JDK
** 解压
** 配置环境变量
#JAVA_HOME
JAVA_HOME=/home/admin/modules/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
** 删除OpenJDK(CentOS 自带的JAVA环境)
** source刚才配置好的系统环境变量文件
$ source /etc/profile
** 验证
$ java -version
** 克隆
将linux01,克隆出linux02,linux03
** 先关闭虚拟机
** 完成克隆
** 修改后两台机器的网络配置
** 主机名
$ sudo vi /etc/sysconfig/network
** 网卡MAC地址
$ sudo vi /etc/udev/rules.d/70-persistent-net.rules
** IP地址
$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
** 重启机器(注意,克隆出来的两台机器都要配置)
** 使用CRT连接3台机器,测试

** 配置SSH无秘钥访问(如下操作,需要在3台机器中分别执行)
** 生成密钥
$ ssh-keygen -t rsa
** 分发公钥
$ ssh-copy-id linux01; ssh-copy-id linux02; ssh-copy-id linux03;
** ssh访问测试
ssh linux01
ssh linux02
ssh linux03
** 关闭后两台机器的界面
CentOS6:
$ sudo vi /etc/inittab
CentOS7:
$ sudo systemctl set-default multi-user.target

** 安装VMTool

** 配置时间服务器
** 检查时区
$ date -R
** 如果时区不是+0800东八区区时的话,需要手动纠正
$ sudo rm -rf /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
** 检查软件包
如果ntp工具不存在,则需要使用yum安装
$ sudo rpm -qa | grep ntp
如果不存在则安装:
$ sudo yum -y install ntp
** 先以网络时间为标准,纠正集群的时间服务器的时间
$ sudo ntpdate pool.ntp.org
** 修改ntp配置文件
$ sudo vi /etc/ntp.conf

修改为如下:
#允许192.168.216.x网段上的所有机器和当前这台机器进行实践同步
restrict 192.168.216.0 mask 255.255.255.0 nomodify notrap

#当该节点丢失网络连接,依然可以作为时间服务器为集群其他节点提供时间同步服务
server 127.127.1.0
fudge 127.127.1.0 stratum 10

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
** 重启ntp服务
CentOS6:
$ sudo chkconfig ntpd on
$ sudo service ntpd restart
CentOS7:
$ sudo systemctl enable ntpd.service
$ sudo systemctl restart ntpd.service
** 使用从节点,手动同步时间(后面两台机器都要操作)
$ sudo ntpdate linux01
** 设置时间同步任务
# crontab -e 编辑时间任务
(尖叫提示:上面的#号代表root用户,下边的#号代表shell注释)
# .------------------------------------------minute(0~59)
# | .----------------------------------------hours(0~23)
# | | .--------------------------------------day of month(1~31)
# | | | .------------------------------------month(1~12)
# | | | | .----------------------------------day of week(0~6)
# | | | | | .--------------------------------command
# | | | | | |
# | | | | | |
*/10 * * * * /usr/sbin/ntpdate linux01

# crontab -l 查看时间任务
** 重启定时任务
CentOS6:
# service crond restart
CentOS7:
# systemctl restart crond.service
** 虚拟机定期备份,一定要做!!!!!
先关机:
$ sudo shutdown -h now
按照时间新建文件夹,将已经安装完成的3台虚拟机,备份到该文件夹中。


Hadoop完全分布式的部署
** Hadoop介绍
** HDFS:分布式存储文件
角色:NameNode和DataNode
** YARN:分布式资源调度框架(Hadoop2.x以上才引用)
角色:ResourceManager和NodeManager
** MapReduce:分布式数据处理框架
** 解压Hadoop
tar -zxf xxx.tar.gz -C xxxx
** Hadoop完全分布式配置
** 准备部署的环境:
linux01 linux02 linux03
namenode resourcemanager
datanode datanode datanode
nodemanager nodemanager nodemanager

** 进入到hadoop的etc/hadoop目录下

** 删除windows脚本:
$ rm -rf *.cmd
** 重命名文件:
$ mv mapred-site.xml.template mapred-site.xml
** 配置文件:
evn文件:只需要修改JAVA_HOME,我的机器:/home/admin/modules/jdk1.8.0_121
hadoop-env.sh
yarn-env.sh
mapred-env.sh
site文件:
** core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux01:8020</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/home/admin/modules/hadoop-2.7.2/hadoop-data</value>
</property>
</configuration>

** hdfs-site.xml

<configuration>
<!-- 指定数据冗余份数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

<!-- 关闭权限检查-->
<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>linux03:50090</value>
</property>

<property>
<name>dfs.namenode.http-address</name>
<value>linux01:50070</value>
</property>

<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

** yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux02</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>

<property>
<name>yarn.log.server.url</name>
<value>http://linux01:19888/jobhistory/logs/</value>
</property>

</configuration>

** mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>linux01:10020</value>
</property>

<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>linux01:19888</value>
</property>
</configuration>
slaves文件:
** 分发安装配置完成的hadoop到linux02以及linux03
$ scp -r hadoop-2.7.2/ linux02:/home/admin/modules/
$ scp -r hadoop-2.7.2/ linux03:/home/admin/modules/
** 格式化namenode(尖叫提示:在hadoop的根目录下执行)
$ bin/hdfs namenode -format
** 启动服务
HDFS:
$ sbin/start-dfs.sh
YARN:(尖叫提示:一定要在ResourceManager所在机器启动)
$ sbin/start-yarn.sh
JobHistoryServer:
$ sbin/mr-jobhistory-daemon.sh start historyserver

posted @ 2018-08-14 20:02  IT路上的小白  阅读(167)  评论(0编辑  收藏  举报