• Hadoop大数据(第一天)集群安装部署


    1、什么是大数据

    基本概念

    《数据处理》
    在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经无法胜任,需求催生技术,一套用来处理海量数据的软件工具应运而生,这就是大数据!

    处理海量数据的核心技术:
    海量数据存储:分布式
    海量数据运算:分布式

    这些核心技术的实现是不需要用户从零开始造轮子的
    存储和运算,都已经有大量的成熟的框架来用

    存储框架:
    HDFS——分布式文件存储系统(HADOOP中的存储框架)
    HBASE——分布式数据库系统
    KAFKA——分布式消息缓存系统(实时流式数据处理场景中应用广泛)

    运算框架:(要解决的核心问题就是帮用户将处理逻辑在很多机器上并行)
    MAPREDUCE—— 离线批处理/HADOOP中的运算框架
    SPARK —— 离线批处理/实时流式计算
    STORM —— 实时流式计算

    辅助类的工具(解放大数据工程师的一些繁琐工作):
    HIVE —— 数据仓库工具:可以接收sql,翻译成mapreduce或者spark程序运行
    FLUME——数据采集
    SQOOP——数据迁移
    ELASTIC SEARCH —— 分布式的搜索引擎

    换个角度说,大数据是: 1、有海量的数据 2、有对海量数据进行挖掘的需求 3、有对海量数据进行挖掘的软件工具(hadoop、spark、storm、flink、tez、impala......)

    大数据在现实生活中的具体应用

    数据处理的最典型应用:公司的产品运营情况分析

    电商推荐系统:基于海量的浏览行为、购物行为数据,进行大量的算法模型的运算,得出各类推荐结论,以供电商网站页面来为用户进行商品推荐

    精准广告推送系统:基于海量的互联网用户的各类数据,统计分析,进行用户画像(得到用户的各种属性标签),然后可以为广告主进行有针对性的精准的广告投放

    2、什么是hadoop

    hadoop中有3个核心组件:
    分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上
    分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运算
    分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源

    3、hdfs整体运行机制

    hdfs:分布式文件系统
    hdfs有着文件系统共同的特征:
    1、有目录结构,顶层目录是: /
    2、系统中存放的就是文件
    3、系统可以提供对文件的:创建、删除、修改、查看、移动等功能
    在这里插入图片描述

    hdfs跟普通的单机文件系统有区别:
    1、单机文件系统中存放的文件,是在一台机器的操作系统中
    2、hdfs的文件系统会横跨N多的机器
    3、单机文件系统中存放的文件,是在一台机器的磁盘上
    4、hdfs文件系统中存放的文件,是落在n多机器的本地单机文件系统中(hdfs是一个基于linux本地文件系统之上的文件系统)

    hdfs的工作机制:
    1、客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<准确来说:切块的行为是由客户端决定的>

    2、一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node)

    3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)

    综述:一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!

    4、搭建hdfs分布式集群

    4.1 hdfs集群组成结构:

    4.2 安装hdfs集群的具体步骤:

    一、首先需要准备N台linux服务器

    学习阶段,用虚拟机即可!
    先准备4台虚拟机:1个namenode节点 + 3 个datanode 节点

    二、修改各台机器的主机名和ip地址

    主机名:hdp-01 对应的ip地址:192.168.33.61
    主机名:hdp-02 对应的ip地址:192.168.33.62
    主机名:hdp-03 对应的ip地址:192.168.33.63
    主机名:hdp-04 对应的ip地址:192.168.33.64

    三、从windows中用CRT软件进行远程连接

    在windows中将各台linux机器的主机名配置到的windows的本地域名映射文件中:
    c:/windows/system32/drivers/etc/hosts
    192.168.33.61 hdp-01
    192.168.33.62 hdp-02
    192.168.33.63 hdp-03
    192.168.33.64 hdp-04
    在这里插入图片描述

    用crt连接上后,修改一下crt的显示配置(字号,编码集改为UTF-8):

    四、配置linux服务器的基础软件环境

     防火墙
    关闭防火墙:service iptables stop
    关闭防火墙自启: chkconfig iptables off

     安装jdk:(hadoop体系中的各软件都是java开发的)

    1. 利用alt+p 打开sftp窗口,然后将jdk压缩包拖入sftp窗口
    2. 然后在linux中将jdk压缩包解压到/root/apps 下
      在这里插入图片描述
    3. 配置环境变量:JAVA_HOME PATH
      vi /etc/profile 在文件的最后,加入:
    export JAVA_HOME=/root/apps/jdk1.8.0_60
    export PATH=$PATH:$JAVA_HOME/bin
    
    1. 修改完成后,记得 source /etc/profile使配置生效
    2. 检验:在任意目录下输入命令: java -version 看是否成功执行
    3. 将安装好的jdk目录用scp命令拷贝到其他机器
    4. 将/etc/profile配置文件也用scp命令拷贝到其他机器并分别执行source命令

     集群内主机的域名映射配置
    在hdp-01上,vi /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

    192.168.33.61   hdp-01
    192.168.33.62   hdp-02
    192.168.33.63   hdp-03
    192.168.33.64   hdp-04
    

    然后,将hosts文件拷贝到集群中的所有其他机器上
    scp /etc/hosts hdp-02:/etc/
    scp /etc/hosts hdp-03:/etc/
    scp /etc/hosts hdp-04:/etc/

    如果在执行scp命令的时候,提示没有scp命令,则可以配置一个本地yum源来安装
    1、先在虚拟机中配置cdrom为一个centos的安装镜像iso文件
    2、在linux系统中将光驱挂在到文件系统中(某个目录)
    3、mkdir /mnt/cdrom
    4、mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom
    5、检验挂载是否成功: ls /mnt/cdrom
    6、3、配置yum的仓库地址配置文件
    7、yum的仓库地址配置文件目录: /etc/yum.repos.d
    8、先将自带的仓库地址配置文件批量更名:

    9、然后,拷贝一个出来进行修改

    10、修改完配置文件后,再安装scp命令:
    11、yum install openssh-clients -y

    五、安装hdfs集群

    1、上传hadoop安装包到hdp-01
    在这里插入图片描述
    2、修改配置文件
    要点提示 核心配置参数:

    1)	指定hadoop的默认文件系统为:hdfs
    2)	指定hdfs的namenode节点为哪台机器
    3)	指定namenode软件存储元数据的本地目录
    4)	指定datanode软件存放文件块的本地目录
    

    hadoop的配置文件在:/root/apps/hadoop安装目录/etc/hadoop/

    1. 修改hadoop-env.sh
      export JAVA_HOME=/root/apps/jdk1.8.0_60
      在这里插入图片描述
    2. 修改core-site.xml
    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hdp-01:9000</value>
    </property>
    </configuration>
    
    1. 修改hdfs-site.xml
    <configuration>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>/root/hdpdata/name/</value>
    </property>
    
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>/root/hdpdata/data</value>
    </property>
    
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hdp-02:50090</value>
    </property>
    
    </configuration>
    
    1. 拷贝整个hadoop安装目录到其他机器
      scp -r /root/apps/hadoop-2.8.1 hdp-02:/root/apps/
      scp -r /root/apps/hadoop-2.8.1 hdp-03:/root/apps/
      scp -r /root/apps/hadoop-2.8.1 hdp-04:/root/apps/

    2. 启动HDFS

    所谓的启动HDFS,就是在对的机器上启动对的软件
    要点
    提示: 要运行hadoop的命令,需要在linux环境中配置HADOOP_HOME和PATH环境变量
    vi /etc/profile

    export JAVA_HOME=/root/apps/jdk1.8.0_60
    export HADOOP_HOME=/root/apps/hadoop-2.8.1
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

    首先,初始化namenode的元数据目录
    要在hdp-01上执行hadoop的一个命令来初始化namenode的元数据存储目录
    hadoop namenode -format
    在这里插入图片描述

    配置下etc/profile
    在这里插入图片描述
    在这里插入图片描述


     创建一个全新的元数据存储目录
     生成记录元数据的文件fsimage
     生成集群的相关标识:如:集群id——clusterID

    然后,启动namenode进程(在hdp-01上)
    hadoop-daemon.sh start namenode
    在这里插入图片描述
    启动完后,首先用jps查看一下namenode的进程是否存在

    然后,在windows中用浏览器访问namenode提供的web端口:50070
    http://hdp-01:50070

    然后,启动众datanode们(在任意地方)
    hadoop-daemon.sh start datanode

    1. 用自动批量启动脚本来启动HDFS

    2. 先配置hdp-01到集群中所有机器(包含自己)的免密登陆

    3. 配完免密后,可以执行一次 ssh 0.0.0.0

    4. 修改hadoop安装目录中/etc/hadoop/slaves(把需要启动datanode进程的节点列入)
      hdp-01
      hdp-02
      hdp-03
      hdp-04

    5. 在hdp-01上用脚本:start-dfs.sh 来自动启动整个集群

    6. 如果要停止,则用脚本:stop-dfs.sh

    5、hdfs的客户端操作

    客户端的理解

    hdfs的客户端有多种形式:

    1、网页形式
    2、命令行形式
    3、客户端在哪里运行,没有约束,只要运行客户端的机器能够跟hdfs集群联网

    文件的切块大小和存储的副本数量,都是由客户端决定!
    所谓的由客户端决定,是通过配置参数来定的
    hdfs的客户端会读以下两个参数,来决定切块大小、副本数量:
    切块大小的参数: dfs.blocksize
    副本数量的参数: dfs.replication

    上面两个参数应该配置在客户端机器的hadoop目录中的hdfs-site.xml中配置

    <property>
    <name>dfs.blocksize</name>
    <value>64m</value>
    </property>
    
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    

    hdfs客户端的常用操作命令
    1、上传文件到hdfs中
    hadoop fs -put /本地文件 /aaa

    2、下载文件到客户端本地磁盘
    hadoop fs -get /hdfs中的路径 /本地磁盘目录

    3、在hdfs中创建文件夹
    hadoop fs -mkdir -p /aaa/xxx

    4、移动hdfs中的文件(更名)
    hadoop fs -mv /hdfs的路径1 /hdfs的另一个路径2

    复制hdfs中的文件到hdfs的另一个目录
    hadoop fs -cp /hdfs路径_1 /hdfs路径_2

    5、删除hdfs中的文件或文件夹
    hadoop fs -rm -r /aaa

    6、查看hdfs中的文本文件内容

    hadoop fs -cat /demo.txt
    hadoop fs -tail -f /demo.txt
    
  • 相关阅读:
    linux的ip配置
    脚本抓取mongoDB慢查询进程,生成kill语句,快速恢复mongodb CPU打满情况
    python脚本生成sql分库分表语句
    脚本获取rds慢日志
    问题反馈小平台实现 ----python练习
    python脚本 监控MySQL slave 状态
    传统复制的复制结构之间转换
    python判断合法IP并区分内网和外网地址
    ELK单台日志收集系统的搭建
    网站程序文件增量更新脚本
  • 原文地址:https://www.cnblogs.com/chengxiaolong/p/10210818.html
Copyright © 2020-2023  润新知