大数据运维初探之Hadoop搭建(入门)

0.大数据技术分类

    1.批处理框架:Mapreduce 批处理历史数据
    2.流处理框架:storm 一直处理源源不断的数据
    3.混合处理框架:spark

1.生态圈核心项目

    1.HDFS分布式文件系统
    2.yarn调度与管理
    3.mapreduce数据并行处理

2.生态圈相关项目

    1.hive数据仓库基础架构
    2.hbase分布式数据库
    3.ambari监控与管理
    4.spark快速计算
    5.zookeeper协调服务
    等等

3.HDFS定义与特点

    定义:hadoop分布式文件系统
    特点:高容错,廉价机,高吞吐,大文件,分块存

关键词

    1.block:128m/块
    2.集群架构:
        Namenode:接受请求,纂写目录,管理文件》块》Datanode的关系
        Datanode:分块存储,多副本

5.HDFS写数据过程

    1.请求上船
    2.Namenode检查路径
    3.返回可以上船
    4.上传一个block,指明副本数量
    5.查询Datanode信息
    6.返回写入Dn地址和策略
    7.请求Dn传数据和副本数量
    8.Dn之间建立副本通道
    9.通道建立应答
    10.Dn回应客户准备就绪
    11.传输block
    12.副本生成
    13.通知Nn接受到了新数据,建立影射
    14.返回客户成功

6.HDFS写过程

    1.请求读取
    2.Nn获取文件块信息
    3.信息传回客户端
    4.分别请求Dn
    5.分别从Dn读取

7.MapReduce编程模型

    1.Map 拆分任务 分配给Dn执行
    2.Reduce 汇总Dn数据输出结果

8.Yarn 资源协调

    1.ResourceManager 资源管理 yarn主节点 执行在Nn或单独机器
    2.Nodeanager 节点管理 yarn从节点 执行在Dn中

过程

        1.客户端发起MapReduce程序
        2.主节点应用管理(ApplicationManager)选择一台从节点,开启一个容器(Container)作为应用管理主机(ApplicationMaster)
        3.应用管理主机计算MR程序所需从节点资源,返回主节点应用管理,传给资源调度(ResourceSchedule)
        4.资源调度各个从节点分配容器,进行Map任务
        5.Reduce任务从应用管理主机获取Map任务结果
        6.Reduce任务汇总结果回传应用管理主机
        7.应用管理主机汇报结果给客户

9.Hadoop部署(单机)

    1.下载Jdk并安装
        略
    2.下载Hadoop 300MB+ 解压之
        资源:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common
    3.修改环境变量

# cd /software
# wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
# tar xf hadoop-2.8.5.tar.gz -C /usr/local
# mv /usr/local/hadoop-2.8.5 /usr/local/hadoop

# vim /etc/profile 
           
export JAVA_HOME=/usr/local/jdk1.8.0_191
export HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# source /etc/profile

测试之
# hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
......

10.高可用Hadoop集群部署

理论:Hadoop核心模块一共三部分。

1.hdfs文件系统,由NameNode+DataNode构成,NameNode是其中核心,它需要作高可用

2.yarn调度系统,由ResourceManager+NodeManager构成,ResourceManager是核心,它需要作高可用

3.mapreduce计算系统,它在节点中进行,本身就是高可用

4.NodeManager和DataNode逻辑上应该是在成对出现在一台机其中,它们本身就是高可用。

5.NameNode和ResourceManager高可用由Zookeeper来实现

6.Zookeeper是分布式的程序协调工具,简单来说,将它安装成集群,集群中推举出一个leader,其他人负责投票。再在需要作高可用的机器上安转ZKFC,监控NameNode和ResourceManager是否正常,是否需要发起投票。

 

则我们的实验环境如下

机器:角色

HD1:NameNode1

HD2:NameNode2

HD3:ResourceManager1

HD4:ResourceManager2

HD5:DataNode+NodeManager

HD6:DataNode+NodeManager2

注:NameNode与ResourceManager是调度,控制,管理,接受访问的设备,本身他们不进行计算。所有它俩的数量自定义的情况下,也建议不要数量过多,DataNode是计算和分片存储的节点,越多越好,本文以两台为例。

再注:Zookeeper集群与hadoop无关 ,它安装在上述6台机器中都行,但是数量最好保证是单数。

11.准备软件

1.openjdk,安装略

2.zookeeper :镜像指路 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

3.hadoop:镜像指路https://archive.apache.org/dist/hadoop/common/

先仅操作一台机器,进行所有机器都要进行的操作,待会再克隆,或者自行重复操作。

所有节点关闭防火墙及Selinux

所有节点时间同步

# vim /etc/hosts
192.168.122.11 hd1   
192.168.122.12 hd2
192.168.122.13 hd3
192.168.122.14 hd4
192.168.122.15 hd5
192.168.122.16 hd6

等会各机器IP自行修改。

软件部分

# cd /software
# wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
# wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz

jdk文章以jdk-8u192-linux-x64.tar.gz为例

# cd /software
# tar xvf jdk-8u192-linux-x64.tar.gz
# mkdir /usr/local/java
# mv /software/jdk1.8.0_192 /usr/local/java/



安装zookeeper

# tar xf zookeeper-3.4.14.tar.gz -C /usr/local
# mv /usr/local/zookeeper-3.4.14 /usr/local/zookeeper
# cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
# mkdir /opt/data
# vim /usr/local/zookeeper/conf/zoo.cfg

修改
dataDir=/opt/data									  
添加
server.1=hd1:2888:3888
server.2=hd2:2888:3888
server.3=hd3:2888:3888	
server.4=hd4:2888:3888	
server.5=hd5:2888:3888	
server.6=hd6:2888:3888	
咱们就每一台机器都投票,也可以仅仅在某几台上面安装。



安装hadoop

# tar xf /software/hadoop-2.8.5.tar.gz -C /usr/local/;
# mv /usr/local/hadoop-2.8.5 /usr/local/hadoop;

修改环境变量

# vim /etc/profile.d/hadoop.sh

export JAVA_HOME=/usr/local/java/jdk1.8.0_192
export ZOOKEEPER_HOME=/usr/local/zookeeper
export HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# source /etc/profile

修改hadoop配置文件

修改hadoop,mapreduce,yarn的java路径
# vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=你的Java安装路径
或
export JAVA_HOME=${JAVA_HOME}

# vim /usr/local/hadoop/etc/hadoop/mapred-env.sh
export JAVA_HOME=${JAVA_HOME}

# vim /usr/local/hadoop/etc/hadoop/yarn-env.sh
export JAVA_HOME=${JAVA_HOME}



以下在中间加上配置

# vim /usr/local/hadoop/etc/hadoop/core-site.xml



    fs.defaultFS
    hdfs://ns1




    hadoop.tmp.dir
    /opt/data/tmp




    ha.zookeeper.quorum
    hd1:2181,hd2:2181,hd3:2181,hd4:2181,hd5:2181,hd6:2181




# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml




    dfs.nameservices
    ns1
 



    dfs.ha.namenodes.ns1
    nn1,nn2




    dfs.namenode.rpc-address.ns1.nn1
    hd1:9000




    dfs.namenode.http-address.ns1.nn1
    hd1:50070





    dfs.namenode.rpc-address.ns1.nn2
    hd2:9000




    dfs.namenode.http-address.ns1.nn2
    hd2:50070





    dfs.namenode.shared.edits.dir
    qjournal://hd5:8485;hd6:8485/ns1




    dfs.journalnode.edits.dir
    /opt/data/journal




    dfs.ha.automatic-failover.enabled
    true




dfs.client.failover.proxy.provider.ns1
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider




	dfs.ha.fencing.methods
	sshfence




    dfs.ha.fencing.ssh.private-key-files
    /root/.ssh/id_rsa



# cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
# vim /usr/local/hadoop/etc/hadoop/mapred-site.xml


    mapreduce.framework.name
    yarn



# vim /usr/local/hadoop/etc/hadoop/yarn-site.xml


        yarn.resourcemanager.ha.enabled
        true




        yarn.resourcemanager.cluster-id
        yarncluster




        yarn.resourcemanager.ha.rm-ids
        rm1,rm2




        yarn.resourcemanager.hostname.rm1
        hd3




        yarn.resourcemanager.hostname.rm2
        hd4




        yarn.resourcemanager.webapp.address.rm1
        hd3:8088




        yarn.resourcemanager.webapp.address.rm2
        hd4:8088




        yarn.resourcemanager.zk-address
        hd1:2181,hd2:2181,hd3:2181,hd4:2181,hd5:2181,hd6:2181




        yarn.nodemanager.aux-services
        mapreduce_shuffle



# vim /usr/local/hadoop/etc/hadoop/slaves
去掉原来的localhost,写上datanode的主机名

hd5
hd6

现在克隆(过程略),然后进行分别操作。

每台克隆机修改IP并重启网络,过程略

现在进行所有机器的两两免密

# ssh-keygen
# cd /root/.ssh
# cp id_rsa.pub authorized_keys
# for i in {1..6};do scp -r /root/.ssh hd$i:/root;done
# for i in {1..6};do scp -r /root/.ssh hd$i:/root/;done

设置zookeeper的ID

[root@hd1 ~]# echo 1 > /opt/data/myid
[root@hd2 ~]# echo 2 > /opt/data/myid
[root@hd3 ~]# echo 3 > /opt/data/myid
[root@hd4 ~]# echo 4 > /opt/data/myid
[root@hd5 ~]# echo 5 > /opt/data/myid
[root@hd6 ~]# echo 6 > /opt/data/myid

11.集群测试

1.所有安装zookeeper的机器开启zookeeper

# zkServer.sh start
# zkServer.sh status
# zkServer.sh stop


2.hd1上启动

# hadoop-daemons.sh start journalnode
# hdfs namenode -format
# hdfs zkfc -formatZK
# start-dfs.sh

3.hd3,hd4都启动
# start-yarn.sh

12.验证

# jps

hd1
2249 NameNode
2537 DFSZKFailoverController
1834 QuorumPeerMain
2602 Jps

hd2
1779 Jps
1705 DFSZKFailoverController
1503 QuorumPeerMain

hd3
1508 QuorumPeerMain
1926 Jps
1663 ResourceManager

hd4
1504 QuorumPeerMain
1752 Jps
1657 ResourceManager

hd5
1745 DataNode
1540 QuorumPeerMain
1673 JournalNode
2009 Jps
1869 NodeManager

hd6
1682 JournalNode
1507 QuorumPeerMain
2019 Jps
1878 NodeManager
1754 DataNode

QuorumPeerMain是投票
JournalNode是同步日志
ResourceManager,NodeManager是yarn进程
NameNode是hdfs主节点
DFSZKFailoverController是zkfs监视

该有的都有视为成功。

高可用测试:略

 

 

你可能感兴趣的:(学习与自我学习,学习)