admin管理员组

文章数量:1631702

文章目录

  • Hadoop是什么
    • Hadoop的优势
    • Hadoop组成
    • HDFS概述
    • Yarn架构
    • MapReduce架构
  • 开始搭建Hadoop集群
    • 一、安装VMware
    • 二、新建虚拟机,安装CentOS
    • 三、配置主机
      • 规划节点
      • 1、授予你的用户sudo权限,并且新建两个目录,所有权改为你的用户
      • 2、修改网络配置
        • ifcfg-ens33
        • hostname
        • hosts
    • 四、连接XShell
    • 五、禁用防火墙和禁用selinux
    • 六、安装配置java
    • 七、安装配置Hadoop
      • 安装Hadoop并且配置环境变量
      • 配置Hadoop配置文件
        • 1. core-site.xml
        • 2. hdfs-site.xml
        • 3. yarn-site.xml
        • 4. mapred-site.xml
        • 5. workers:
    • 八、利用VMware复制四台服务器
    • 九. 搭建全分布式
      • 配置免密登录
    • 十、初始化Hadoop集群
    • 十一、在windows本地创建IP对host的映射(如果web端的功能不能正常实现看这里)
    • 十二、查看web端的dfs(文件分布式系统)
    • 十三、测试MapReduce功能
    • 附、一键对Hadoop操作
      • 一键启动Hadoop
      • 一键关闭Hadoop
    • 结束

Hadoop是什么

1. 分布式系统基础架构
2. 解决海量数据的存储与分析计算
3. Hadoop广义是指Hadoop生态圈

Hadoop的优势

1. 高可靠性:底层维护多个数据副本,一个故障不会导致数据的丢失
2. 高扩展性:在集群间分配数据,可动态增加服务器
3. 高效性: 使用MapReduce思想,并行工作加快处理速度
4. 高容错性:能够自动将失败的任务重新分配

Hadoop组成

Hadoop组成 MapReduce 计算 Yarn 资源调度 HDFS 数据存储 Common 辅助工具

HDFS概述

名称作用
NameNode(NN)存储文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的块列表
DataNode(DN)在本地文件系统存储文件块数据,以及块数据的校验和
SecondaryNameNode(2NN)每一段时间对NameNode元数据备份

Yarn架构

名称作用
Resource Manager(RM)管理整个集群的资源
Node Manager(NM)管理单个服务器资源
ApplicationMaster(AM)管理单个任务
Container相当于一个独立服务器,里面包含了任务运行所需的资源

MapReduce架构

MapReduce将计算过程分为两个阶段:Map和Reduce
1. Map阶段并行处理输入数据
2. Reduce阶段对Map结果进行汇总

开始搭建Hadoop集群

点击下载 CentOS-7
点击下载 VMware16 pro
点击跳转 XSHELL和XFTP教育版下载
点击跳转 ORACLE JDK8
点击下载 Hadoop-3.1.3

事前准备 CentOS7系统镜像 Windows平台 VMware XSHELL XFTP Liunux平台 jdk.tar.gz Hadoop-3.1.3

一、安装VMware

二、新建虚拟机,安装CentOS

三、配置主机

规划节点

注解节点调度可选资源分配
Node0NameNodeNodeManager==========2c,4g,30g
Node1DataNodeResourceManager,Nodemanager==========1c,2g,20g
Node2DataNode,SecondNameNodeNodemanager1c,1g,20g
Node3DataNodeNodemanagerhistoryserver1c,1g,20g

1、授予你的用户sudo权限,并且新建两个目录,所有权改为你的用户

以下全文中的username均为代指你的用户名,在复制命令时注意替换
鼠标右键桌面,找到在终端打开

# 输入密码后进入最高权限root角色
su
# 给自己新建的用户增加sudo权限'
vi /etc/sudoers
# ##Allows people in group wheel to run all commands
# %wheel  ALL=(ALL)       ALL'
# 在此处下面添加
username     ALL=(ALL)       NOPASSWD:ALL
# 切换新建用户
su username
# 前往/opt目录,新建module文件夹和software文件夹
cd /opt
sudo mkdir module
sudo mkdir software
# 将文件所有权交给新建用户
sudo chown username:username module software

2、修改网络配置

# 修改网络配置
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改主机名称
sudo vi /etc/hostname
# 配置IP对主机名的映射
sudo vi /etc/hosts
# 重启网卡以使配置生效
service network restart

网络配置改为:IP的前三个网段要与自己Vnet8的网段保持一致(具体到windows上的查询方法为在CMD里面输入ipconfig即可找到)

ifcfg-ens33
# 把BOOTPROTO的值由dhcp修改为static
BOOTPROTO="static"
# 后面加上四行
# 前三个网段 + 3~255任意数字,建议130开始,后续主机这个值递增即可
IPADDR=192.168.18.130
# 默认值,不更改
NETMASK=255.255.255.0
# 前三个网段 + 最后一段固定为2
GATEWAY=192.168.18.2
# 与上一行保持一致即可
DNS1=192.168.18.2
hostname
# 删除原内容,写入你的主机名称即可
hosts

IP对主机名映射样板如下:

# 自带的内容可以删除
# 前面是你的主机的ip地址,后面是你的主机名,后续可以直接ping主机名通过这个文件来找到对应ip
192.168.18.160 node0
192.168.18.161 node1
192.168.18.162 node2
192.168.18.163 node3

四、连接XShell

  1. 打开XShell,新建会话
  2. 名称随意填写,主机填写IP即可连接(连接不上可以重启虚拟机一下重试)
  3. 用户输入你新建的用户,密码即可(不建议root连接)

五、禁用防火墙和禁用selinux

# 关闭防火墙、禁止自启动防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld.service
# SELINUX的enforcing修改为disabled
sudo vi /etc/selinux/config

六、安装配置java

注意你下载的jdk的版本可能会不一致,注意更改文件名

# 如果机器已经自带了jdk,用如下命令卸载
su
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
# 进入software目录
cd /opt/software
# 在XSHELL上方有打开XFTP
# 利用XFTP将jdk8和Hadoop的压缩包放在/opt/software目录下
# 解压jdk输出到/opt/module/
tar -zxvf jdk-8u341-linux-x64.tar.gz -C /opt/module/
# 配置环境变量
su
echo '#JAVA_HOME' >> /etc/profile.d/my_env.sh
echo 'export JAVA_HOME=/opt/module/jdk1.8.0_341' >> /etc/profile.d/my_env.sh
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile.d/my_env.sh
# 载入新的配置文件
source /etc/profile

七、安装配置Hadoop

安装Hadoop并且配置环境变量

# 解压hadoop到输出/opt/module/
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
# 配置环境变量
su
echo '#HADOOP_HOME' >> /etc/profile.d/my_env.sh
echo 'export HADOOP_HOME=/opt/module/hadoop-3.1.3' >> /etc/profile.d/my_env.sh
echo 'export PATH=$PATH:$HADOOP_HOME/bin' >> /etc/profile.d/my_env.sh
echo 'export PATH=$PATH:$HADOOP_HOME/sbin' >> /etc/profile.d/my_env.sh
# 载入新的配置文件
source /etc/profile

配置Hadoop配置文件

cd /opt/module/hadoop-3.1.3/etc/hadoop
vi core-site.xml
vi hdfs-site.xml
vi yarn-site.xml
vi mapred-site.xml
vi workers
1. core-site.xml
<!-- core-site.xml -->
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node0:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>
2. hdfs-site.xml
<!-- hdfs-site.xml -->
<configuration>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>node0:9870</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node2:9868</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hqp</value>
    </property>
</configuration>
3. yarn-site.xml
<!-- yarn-site.xml -->
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
        <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME,PATH,LANG,TZ</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log.server.url</name>
        <value>http://node3:19888/jobhistory/logs</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
</configuration>
4. mapred-site.xml
<!-- mapred-site.xml -->
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node3:10020</value>
    </property>
        <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node3:19888</value>
    </property>
</configuration>
5. workers:
node1
node2
node3

八、利用VMware复制四台服务器

  1. 关闭主机
  2. 复制机器
  3. 打开每一台机器,然后每台机器执行一遍的“三、配置主机”下的“2.修改网络配置”即可

九. 搭建全分布式

配置免密登录

以下命令注意使用xshell多开,减少重复工作

  • 打开XShell多开
    上方菜单栏工具 --> 发送输入到 --> 所有会话
# 创建当前主机rsa密钥
ssh-keygen -t rsa
# 拷贝hostname的密钥到本地,需要进行多次操作保证每一台主机拥有所有主机的密钥
ssh-copy-id -i node0
ssh-copy-id -i node1
·
·
·
ssh-copy-id -i noden
# 尝试免密连接其他主机,建议多次尝试,避免问题发生
ssh master

十、初始化Hadoop集群

# 该命令一定只在namenode上面执行
hdfs namenode -format
# namenode上启动分布式文件系统
start-dfs.sh
# resourceManager上启动yarn
start-yarn.sh
#在所有主机上运行jps,查看开启的进程,若都有datanode则恭喜你hadoop环境搭建完成了
jps

十一、在windows本地创建IP对host的映射(如果web端的功能不能正常实现看这里)

找到C:\Windows\System32\drivers\etc,将下述配置追加到hosts文件中(注意根据你的映射做出修改)

192.168.18.160 node0
192.168.18.161 node1
192.168.18.162 node2
192.168.18.163 node3

十二、查看web端的dfs(文件分布式系统)

访问 master:9870查看系统,无法访问时应将master改为其对应的ip(若完成了十一,则不会出现该问题)

十三、测试MapReduce功能

运行一个WordCount程序(检查一个文档中每个单词出现的次数)

# 本地编辑一个txt文档
cd $HADOOP_HOME
# 任意写入几个个单词,提供给后续wordcount程序作为输入文件
vi word.txt
# 把本地文件上传到HDFS上
hadoop fs -put ./word.txt /word.txt
# 调用wordcount程序
$HADOOP_HOME/bin/hadoop  jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /word.txt /output
# 在上述的web端查看输出,在/output的part-xxx中,查看输出

附、一键对Hadoop操作

一键启动Hadoop

# 在用户目录下创建该脚本,填入下面的内容
vi ~/start-hadoop.sh
# 授予执行权
sudo chmod 777 ~/start-hadoop.sh
# 随时随地通过调用下面代码执行该脚本
~/start-hadoop.sh
echo "=========正在启动Hadoop服务=========="
echo "starting hdfs"
ssh node0 start-dfs.sh
echo "starting yarn"
ssh node1 start-yarn.sh
echo "starting historyserver"
ssh node3 mapred --daemon start historyserver
echo "Hadoop启动完毕!"

一键关闭Hadoop

# 在用户目录下创建该脚本,填入下面的内容
vi ~/stop-hadoop.sh
# 授予执行权
sudo chmod 777 ~/stop-hadoop.sh
# 随时随地通过调用下面代码执行该脚本
~/stop-hadoop.sh
echo "=========正在停止Hadoop服务=========="
echo "stop hdfs"
ssh node0 stop-dfs.sh
echo "stop yarn"
ssh node1 stop-yarn.sh
echo "stop historyserver"
ssh node3 mapred --daemon stop historyserver
echo " All Stop!"

结束

至此已经全部配置完成了,有不清楚的地方还请指正~

本文标签: 集群Hadoop