先填一下上次许诺的坑: (许诺的那篇文章链接如下)
如何用sql在1分钟从1T数据中精准定位查询?Hive离线数仓 Spark分析-CSDN博客文章浏览阅读1.2k次,点赞38次,收藏14次。在大数据-Hadoop体系中 ,spark批处理和hive离线数仓可以说是对立并行的两个大分支技术栈,,,建议主攻其一,另一个灵活使用就行。他们是2015出现在国内,2017年之后国外各大公司纷纷采用,国内2020采用的,目前属于很前沿,并且很主流,很顶层的技术。(注:19年国内云计算开始起势,大数据的发展与云计算和人工智能等密切相关,更离不开芯片,硬件存储技术等相关支撑,它们之间相辅相成 https://blog.csdn.net/qq_61414097/article/details/140999898
https://blog.csdn.net/qq_61414097/article/details/140999898
 
我的许诺有点多,请容我慢慢填坑 “后续的话我会出一期关于大数据所有主流组件搭载在一个集群实验环境的运维配置文档。”此坑暂时填补嘿嘿 这篇文章就是
先收藏,过几天我会对文章进行精修,
因为这是我两年前用的,实验集群配置 不过作为参考文档也可有个约数,自己有个对照配置,方便排查一些,组件不兼容的坑。
它其实是.txt文档,所以放在这里有点粗放了哈哈哈,抱歉
还要整理spark,所以这篇就先到这里吧 ,我先在已经在磕云计算了,再不整理下就忘光了hhh
1 安装VMware和CentOS7系统
CentOS7.9.io镜像下载
建议 阿里云下载cents镜像ios 链接如下
https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.iso
VMware安装
win7用 12
win10 用 15
win11用 16.2.4
别问为什么,问就是win和VMware不兼容导致虚拟机各种奇葩异常,重装集群了
这已经是我当年实验了20多次得出的结果,最佳兼容性搭配。
安装过程 未完待续。。。
1.安装了VMware和CentOS7系统
 2.设置了网络,使用Xshell进行连接
 网络问题:
 3.协助大家远程解决问题的软件:teamViewer、向日葵
 --------
 /home  2g
 /boot 目录用来存放文件内核0.5g
 /      根目录15g
 /    swap为交换临时数据目录,最好不要用安装时少分配空间1.5g
/必须掌握的linux命令:
 1.文件和目录操作
 cd:切换目录
 ls -al :列出所在目录的文件及文件夹
 mkdir: 创建文件夹
 cat :查看文件
 mv:移动文件或者修改名字
tar -zxvf :解压文件,后面经常使用
 vi或者vim :编辑文件,后面经常使用
初学者完成 Linux 系统分区及安装之后,需熟练掌握 Linux 系统管理必备命令,
 命令包括:cd、ls、pwd、clear、chmod、chown、chattr、useradd、userdel、
 groupadd、vi、vim、cat、more、less、mv、cp、rm、rmdir、touch、ifconfig、
 ip addr、ping、route、echo、wc、expr、bc、ln、head、tail、who、hostname、
 top、df、du、netstat、ss、kill、alias、man、tar、zip、unzip、jar、fdisk、
 free、uptime、lsof、lsmod、lsattr、dd、date、crontab、ps、find、awk、
 sed、grep、sort、uniq 等,
 每个命令至少练习 30 遍,逐步掌握每个命令的用法及应用场景;
1.1安装系统后的准备工作inux系统初始环境设置
 1)配置服务器的IP地址
     查看机器的网卡名称。
          ip address show。
 (2)设置服务器的主机名称
     设置主机名称
         hostnamectl set-hostname master (主机名):修改以后永久生效
         hostname master11  :临时修改主机名为master111
     查看当前服务器的名称。
         hostname
 (3)绑定主机名与IP地址
            查看ip  
        ip addr
     192.168.20.134
        
     修改hosts文件
         vi /etc/hosts
     在其中增加相应内容(下面的内容表示主机名master对应的IP地址为192.168.1.1):
     192.168.20.134 master
(4)
     临时关闭防火墙
     关闭命令:
          systemctl stop firewalld
     查看防火墙的状态
         systemctl status firewalld 
我们此时永久关闭防火墙供后续使用,临时关闭后续容易无法连接外网
[root@localhost ~]# systemctl  disable  firewalld.service 
 Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
 Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
     
         查看防火墙的状态
         systemctl status firewalld  
     
     配置 selinux
 [root@localhost ~]# getenforce 
 Enforcing
 [root@localhost ~]# setenforce 0
2.备份原来的yum源
 [root@controller ~]# mkdir /etc/yum.repos.d/repobak
 [root@controller ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repobak/
3.配置网络yum源
 原来的yum源已备份在 /etc/yum.repos.d/repobak
(1)-----这里直接使用 阿里 的 镜像
     新建文件  aliyun.repo
     vi /etc/yum.repos.d/aliyun.repo
     wget -O  /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo
     生成缓存列表:
     yum makecache
    生成缓存列表:
     yum makecache
     清理缓存 
     yum clean all
     yum repolist
     检查是否配置成功命令
2.用户操作(了解)
 只是用root登录操作,不涉及权限和目录所属者或者所属组的修改
 useradd :添加用户
 passwd :给用户设置密码
 chown: 更改文件所属用户或者组
 chmod:更改文件权限
 su:切换用户
 sudo:临时取得权限
3.系统命令(临时了解,后面还会用到)
 clear:清除屏幕 ctl l(清屏)
 hostname:显示或者主机名(临时生效)
 hostnamectl set-hostname:设置主机名,重启后永久生效
 (不可以是中文也不可以是数字一般是设为英文)
 ip: 查看ip
 systemctl:系统服务的开关,例如关闭防火墙
4.用户和组(了解,能答出来就可以)
     用户分3种类型:
         a,超级用户,UID是0
         b,系统用户,UID是1-999
         c,普通用户,UID从1000开始
    组分2中类型:
         a,系统组,GID是0-999
         b,私有组,GID从1000开始
         默认在创建用户的时候,会创建一个与用户名一样的组
5.文件类型和权限
     文件分4种类型:
         a,普通文件,标识符:-
         b,目录文件,标识符:d
         c,链接文件,硬链接标识符:- 、软链接标识符:l
         d,设备文件,字符设备文件标识符:c、块设备文件标识符:b
     
     文件权限分3种:    可读(r)、可写(w)、可执行(x)
     文件权限表示方法:数字表示、字符赋值
         0:--- 无任何权限
         1:--x 可执行
         2:-w- 可写
         3:-wx 可写可执行
         4:r-- 可读
         5:r-x 可读可执行
         6:rw- 可读可写
         7:rwx 可读可写可执行
 =====================================================================
 1.系统没安装好、远程连接有问题
 2.修改完配置文件profile以后,没有source
2
一、hadoop概述:
 1.起源:Google的分布式文件系统
 
2.Hadoop生态圈
     HDFS:分布式文件系统,具有高容错性,提供高吞吐率的数据访问,能够有效处理海量数据集。
     YARN:通用资源管理系统,为上层应用提供统一资源管理调度。
     MapReduce是面向大型数据处理的并行计算模型和方法,仅适合离线数据处理。
     
     ZooKeeper:分布式数据管理和协调框架,保证分布式环境中数据的一致性,是Hadoop组件的一个监管系统。
     HBase:基于HDFS的非关系型列式存储数据库,齐保存的数据可使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。
     Hive:数据仓库技术,用于查询和管理存储在分布式环境下的大数据集,通常用于离线分析。
     
     Sqoop:主要用于传统关系型数据库和Hadoop之间传输数据。
     
     Flume:日志收集系统,对日志数据进行过滤、格式转换等,能够将日志写往各种数据目标。
     
     Kafka:分布式消息系统,它主要用于处理活跃的流式数据。
     
     Spark:计算引擎(框架)。
     
     Mahout:数据挖掘算法库,实现了一些可扩展的机器学习领域经典算法。
     Storm:是一个分布式的、容错的实时处理系统。
     Oozie: 工作流调度引擎,用于协调多个Hadoop作业的执行。
     Azkaban:批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。
     
 3.hadoop版本演变(了解)
     1.x 仅包含HDFS和MapReduce
     2.x 引入了Yarn作为资源管理
     3.x 增加了新的编码、备份、负载均衡机制
4.hadoop运行模式
     3种模式:
         单机模式:无需修改配置文件,不需要启动HDFS和YARN
         伪分布模式:需要修改配置文件,需要启动HDFS和YARN
         完全分布式:分主从节点分别启动HDFS和YARN
5.hadoop的优点:扩容能力强、成本低、高效率、高可靠
   脑海里一定要有图:HDFS架构图
  
二、hadoop核心组件(了解)
1.HDFS
     分布式文件系统,数据存储管理的基础,有NameNode和DataNode
     NameNode:HDFS的管理者,负责处理客户端请求、管理DataNode
     SeconderNameNode:用于合并元数据文件FSImage,不是NameNode的备份,会帮助恢复NameNode
     DataNode:数据节点,负责存储数据、处理读写请求,定期向NameNode报告数据信息和心跳
     FSImage:存储元数据
     edits:日志文件,记录读写操作等
     
     HDFS的优缺点(了解,根据HDFS的特点大胆猜测)
     优点:高可靠、高容错、适合处理海量数据
     缺点:不适合做实时分析、不适合处理小文件、不支持并发写入和文件随机修改
2.MapReduce
     分布式计算模型,将任务分发给多节点并行处理,整合各节点结果后输出最终结果
     
     MapReduce优缺点:
     优点:高容错、易编程、易扩展、适合离线数据处理
     缺点:不适合实时计算、流式计算、有向图计算
     
 3.YARN
     资源管理系统,负责资源分配和任务调度,采用的是Master/Slave(主/从)结构。
     组件包括:
     ResourceManager:资源管理器,负责整个系统的资源管理与分配。由两个组件构成:
 (1)调度器(Scheduler):根据资源情况和预先定义的策略以及应用程序的资源需求,将系统中的资源分配给各个正在运行的应用程序。
 (2)应用程序管理器(Applications Manager):负责管理整个系统中所有应用程序,监控 ApplicationMaster 运行状态并在其失败时重新启动它。
    NodeManager:管理单个节点上的资源。向ResourceManager汇报节点资源使用情况和Container的运行状态。
     负责接收 ResourceManager 的资源分配要求,分配具体的 Container 给应用的某个任务。
     处理来自 ApplicationMaster 的Container启动或停止请求。
    ApplicationMaster:应用程序的第一个进程,负责监控、管理应用程序所有任务的运行
         将要处理的数据进行切分
         为启动任务,向ResourceManager申请资源,指示任务所在的NodeManager启动Container。
         监视任务的运行状态,重新启动失败的任务。当任务运行完毕,负责返还资源。
    Container:
     YARN 中动态创建的资源容器,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
 -------------------------
  
3、Linux系统环境设置
(1)配置服务器的IP地址
     查看机器的网卡名称。
          ip address show。
 (2)设置服务器的主机名称
     设置主机名称
         hostnamectl set-hostname master :修改以后永久生效
         hostname master1  :临时修改
     查看当前服务器的名称。
         hostname
 (3)绑定主机名与IP地址
     编辑本地名字解析文件hosts。
         vi /etc/hosts
     在其中增加相应内容(下面的内容表示主机名master对应的IP地址为192.168.xxx.xxx):
         192.168.229.133  master
 (4)查看SSH服务状态
     CentOS 7默认安装SSH服务,查看SSH的状态。
         systemctl status sshd
     关闭防火墙
     关闭命令:
          systemctl stop firewalld
     查看防火墙的状态
         systemctl status firewalld 
         
     ----
     下载上传JDK
         
 (5)卸载自带的OpenJDK
     查找:rpm -qa | grep java    
     卸载:rpm -e --nodeps 包名
 rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
 rpm -e --nodeps tzdata-java-2023c-1.el7.noarch
        
 (6)安装JDK
     安装包解压到/opt目录下
         tar -zxvf  ~/jdk-8u231-linux-x64.tar.gz -C /opt
     查看目录确认
         ll /opt    
 (7)设置JAVA环境变量
     配置/etc/profile文件vi /etc/profile
         
     在文件的最后增加如下两行:
         export JAVA_HOME=/opt/jdk1.8.0_231
         export PATH=$PATH:$JAVA_HOOME/bin
     
 (8)设置JAVA环境变量
     使设置生效:
         source /etc/profile
     检查JAVA是否可用。
         echo $JAVA_HOME
         java -version 或javac -version
 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/usr/local/src/java/jdk1.8.0_141/bin
 export CLASSPATH=/usr/local/src/java/jdk1.8.0_141/lib/
#export JAVA_HOME=/usr/local/java/jdk1.8.0_202
 #export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
 #export PATH=$PATH:$JAVA_HOME/bin
 注意如果出现 export PATH=/usr/local/sbin:/usr/local..... 那再写#export JAVA_HOME=/....
 #export PAT... 这种会报错 要么全部拆分 要么合写
如果你使用 yum 安装了 OpenJDK 1.8.0_412,并且通过 java -version 命令验证了安装,那么 OpenJDK 的环境变量将会自动配置。
 在 CentOS 7 中,OpenJDK 的环境变量 JAVA_HOME 通常位于 /etc/profile.d/jdk.sh 文件中。这个文件会在系统启动时动加载,并设置 JAVA_HOME 和相关环境变量。
 打开终端并以管理员身份登录。
 查看 /etc/profile.d/jdk.sh 文件:
 cat /etc/profile.d/jdk.sh
 输出会显示配置的环境变量,其中应该包含 JAVA_HOME 的定义。
 如果你的系统上没有 /etc/profile.d/jdk.sh 文件,那可能是因为你安装的 OpenJDK 版本较新,或者使用了其他方式进行安装。在这种情况下,你可以手动设置 JAVA_HOME 环境变量。
 cd  /usr/lib/jvm/ 我的是这个
 ls$5
 [root@master ~]# ls /usr/lib/jvm
 java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
 jre
 jre-1.8.0
 jre-1.8.0-openjdk
 jre-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
 jre-openjd
  vi /etc/profile
 在文件的末尾添加以下行:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
 export PATH=$PATH:$JAVA_HOME/bin 
 这是我的
 验证 Java -version 
 java 
 echo $JAVA_HOME
例如,可以编辑 /etc/profile 文件,并在其中添加以下行:
 export JAVA_HOME=/usr/lib/jvm/java-x.x.x
 export PATH=$PATH:$JAVA_HOME/binecho $JAVA_HOME
 确保将 java-x.x.x 替换为你实际的 Java 安装路径。
 保存并关闭文件。然后运行以下命令使环境变量生效:
 source /etc/profile
 -------------
 安装hadoop
 下载hadoop    并上传
(9)安装Hadoop软件
     将安装包解压到/usr/local/src/目录下
         tar -zxvf ~/hadoop-2.7.1.tar.gz -C /usr/local/src/
     查看目录确认。
         ll /usr/local/src/
 (10)配置Hadoop环境变量
     修改/etc/profile文件。
         vi /etc/profile
     在文件的最后增加两行:
         export HADOOP_HOME=/usr/local/src/hadoop-2.7.1
         export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
 (11)配置Hadoop环境变量
     使设置生效:
         source /etc/profile
     检查设置是否生效:
         hadoop        
 --------
 单机版hadoop
(12)进入Hadoop目录
         cd /usr/local/src/hadoop-2.7.1/
     配置hadoop-env.sh文件
     配置命令
         vi etc/hadoop/hadoop-env.sh
     在文件中查找export JAVA_HOME这行,改为如下所示内容。
         export JAVA_HOME=/usr/local/src/jdk1.8.0_231
 (13)创建输入数据存放目录
     将输入数据存放在~/input目录(root用户主目录下的input目录中)。
         mkdir ~/input
 (14)创建数据输入文件
     创建数据文件data.txt,将要测试的数据内容输入到data.txt文件中。
         vi ~/input/data.txt
     输入如下内容,保存退出。
         Hello World
         Hello Hadoop
         Hello Huasan    
 (15)测试MapReduce运行
     运行WordCount官方案例,命令如下:
         hadoop jar /usr/local/src/hadoop-2.7.1/share/hadoop/mapreduce /hadoop-mapreduce-examples-2.7.1.jar         wordcount ~/input/data.txt ~/output
     查看运行结果: 
         ll ~/output
     处理的结果存放在part-r-00000文件中,查看该文件:
         cat ~/output/part-r-00000
 =====================================================
  
4免密登录
实验环境下Hadoop集群
         3个节点:
             master:
             slaver1:
             slaver2:
         
 SSH无密码登录
         SSH:安全网络协议,开源实现、商业实现。 
             连接的客户端:putty、SecureCRT、XShell
             守护进程sshd,监听端口号:22
             两个验证:主机验证:需要输入server的IP;用户验证:需要输入用户名密码
             验证机制:密码验证机制、公钥认证机制
             验证机制:基于口令的安全验证、基于秘钥的安全验证
         
         非对称加密:
             通过公钥、私钥进行加密、解密。不论是公钥加密或者私钥加密的数据,都能用对应的私钥或者公钥解密
             公钥放服务器端、私钥放本机
             
         SSH安全机制验证过程:
             1.创建一个密钥对,id_rsa(私钥)、id_rsa.pub(公钥),公钥放到服务器(目标机)上
             2.将公钥的内容追加到目标机的授权文件中
             
任务:
     1.确保master主机,软件包全部上传到/opt/software下,jdk、hadoop已解压安装到了/usr/local/src下,且环境变量JAVA_HOME、HADOOP_HOME已配置(主机名、IP地址和主机名映射、防火墙关闭)java、hadoop命令都能识别
     2.克隆master主机,克隆2台,名字分别为slaver1、slaver2
     3.开启3台虚拟机、使用Xshell进行连接
     4.更改slaver1主机名、ip地址和主机名的映射关系、更改slaver2主机名、3台主机ip地址和主机名的映射关系
     
     使用ssh-keygen命令时,第一次回车、第二次输入y后,回车、第三第四次都回车,秘钥对就生成好了,3台主机都需要执行
        
 配置免密登录(master到slaver1、slaver2;slaver1、slaver2到master)
     1.前提:有3个节点,每个节点都安装了JDK、Hadoop单机版、主机名、主机名和IP映射都配置好、环境变量JAVA_HOME、HADOOP_HOME已配置(主机名、IP地址和主机名映射、防火墙关闭)java、hadoop命令都能识别
     
     配置本主机免密登录步骤:
         1.在本主机使用ssh-keygen -t rsa -P ''生成密钥对
                    .将id_rsa.pub的内容追加本机的授权文件authorized_key中
         
     配置master到slaver1、slaver2免密登录:
         1.在3个节点上都使用ssh-keygen -t rsa -P ''生成密钥对
         2.将master的公钥id_rsa.pub的内容追加slaver1的授权文件authorized_key中
    配置slaver1、slaver2到master免密登录
         1.在3个节点上都使用ssh-keygen -t rsa -P ''生成密钥对
         2.将slaver2的公钥id_rsa.pub的内容追加master的授权文件authorized_key中
ssh-keygen -t rsa -P ''
  ssh-keygen -t rsa -P ''
  ssh-keygen -t rsa -P ''
 cd ~/.ssh/ = cd /root/.ssh/
   ls
 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys    
#slave1
 [hadoop@slave1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 [hadoop@slave1 .ssh]$ ls ~/.ssh/
 #slave2
 [hadoop@slave2 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 [hadoop@slave2 .ssh]$ ls ~/.ssh/
 chmod 600 ~/.ssh/authorized_keys
 chmod 600 ~/.ssh/authorized_keys    
 chmod 600 ~/.ssh/authorized_keys
修改 SSH 配置文件"/etc/ssh/sshd_conchmod 600 ~/.ssh/authorized_keysfig"的下列内容
 #master
 [hadoop@master .ssh]$ su - root
 [root@master ~]# vi /etc/ssh/sshd_config
 PubkeyAuthentication yes
 #slave1
 [hadoop@slave1 .ssh]$ su - root
 [root@slave1 ~]# vi /etc/ssh/sshd_config
 PubkeyAuthentication yes
 #slave2
 [hadoop@slave2 .ssh]$ su - root
 [root@slave2 ~]# vi /etc/ssh/sshd_config
 PubkeyAuthentication yes
 设置完后需要重启 SSH 服务,才能使配置生效。
  systemctl restart sshd
 systemctl restart sshd
 systemctl restart sshd
 master
 scp ~/.ssh/id_rsa.pub master@slave1:~/
  scp ~/.ssh/id_rsa.pub hadoop@slave2:~/
  cat ~/id_rsa.pub >>~/.ssh/authorized_keys
 slave1
 scp ~/.ssh/id_rsa.pub slave1@master:~/
 scp ~/.ssh/id_rsa.pub slave1@slave2:~/
  cat ~/id_rsa.pub >>~/.sh/authorized_keys
 slave2
 scp ~/.ssh/id_rsa.pub slave2@slave1:~/
 scp ~/.ssh/id_rsa.pub slave2@master:~/
  cat ~/id_rsa.pub >>~/.ssh/authorized_keys
rm -f ~/id_rsa.pub
 rm -f ~/id_rsa.pub
 rm -f ~/id_rsa.pub
 看 查看 3个 节点 authorized_keys 文件
 cat ~/.ssh/authorized_keys
     ####简单的方法:
su - root
 [root@master ~]# vi /etc/ssh/sshd_config
 PubkeyAuthentication yes
         
 1.知道服务器密码的情况
 #免密码登录被控的主机(ip是被控的,之后输入yes,还会让你输入被控的密码)
 一定要修改hosts,三个均改,
 若四台则四台每个都改且 每个/etc/hosts 中添加四个IP主机名
vim /etc/hosts 
 192.168.28.145 root
 192.168.28.144 slave1
 192.168.28.143 slave2
 cd /root/.ssh/ 
 ssh-keygen -t rsa
#上面的命令后三次回车
   
注意:cd /root/.ssh/   rm -rf known_hosts
 在/root/.ssh/ 里面只是保留authorized_keys  id_rsa  id_rsa.pub两个文件其余删完否则会配失败
#然后把想要免密登录的服务器加进来
 ssh-copy-id -i /root/.ssh/id_rsa.pub root@slave1
 ssh-copy-id -i /root/.ssh/id_rsa.pub root@slave12
  
cd /root/.ssh/ 
 2.不知道服务器密码的情况
 #例子:pub能免密登录pri(就是pri是被控的主机)
 ssh-keygen -t rsa(两台都操作)
 #上面的命令后三次回车
  #pub中
  cd /root/.ssh/
 #(复制id_rsa.pub里的
  
 Pri中
  
 cd /root/.ssh/
 vim authorized_keys    #这个文件是自己写的,内容是pub的id_rsa.pub里的
  
 #在pub执行下面的
 ssh-copy-id -i /root/.ssh/id_rsa.pub root@pri的ip
 #输入yes就可以了
 #如果不是22端口,就在后面加上 (-p 端口)
 ssh-copy-id -i /root/.ssh/id_rsa.pub root@pri的ip -p 端口
  
 5.hadoop集群运行
 
1.免密登录
 2.Hadoop的配置文件:4个
 core-site.xml
 hdfs-site.xml
 mapred-site.xml
 yarn-site.xml
 /usr/loacal/src/hadoop-2.7.6/etc/hadoop
记住2个路径:
 软件包位置:
     /opt/software/
 软件安装路径:
     /usr/loacal/src/
3.配置文件:
     xml有规则:
         a,在<configuration></configuration>标签中配置
         b,<property></property>标签中配置具体的name、value
         c,<name>参数名</name>,参数名不能随便写
         d,<value>参数值</value>
 <property>
     <name>参数名</name>
     <value>参数值</value>
 </property>
         
 4.如何修改配置文件
     a,<name>参数名</name>参数名是固定的写法,不能瞎造,具体名字参看官网
     b,<value>参数值</value>标签中的值是我们可修改的,主要是主机名或者IP、端口号、整数值、hadoop运行产生的文件存放路径
     c,<!-- -->是xml中的注释内容
5.如何启动伪分布式?
     a,按照实验文档4完成相应的配置后,在master上执行格式化命令:hdfs namenode -format
     b,格式化完毕,分别启动nameNode、seconderyNamenode、dataNode、yarn,启动命令从start开始都要手动敲,不能出错
                     hadoop-daemon.sh start namenode
                     hadoop-daemon.sh start secondarynamenode
                     hadoop-daemon.sh start datanode
                     start-yarn.sh
                     hadoop-daemon.sh stop namenode
                     hadoop-daemon.sh stop secondarynamenode
                     hadoop-daemon.sh stop datanode
                     stop-yarn.sh
 6.验证伪分布式
     在master上执行进程查询命令:jps
         出现一下进程就算成功:
                                 [root@master hadoop]# jps
                                     2576 ResourceManager##
                                     2418 SecondaryNameNode##
                                     2245 DataNode##
                                     2103 NameNode##
                                     2711 NodeManager##
                                     3421 Jps
 至此,master主机的伪分布式已完成
7.全分布式就是伪分布式的复制,但是需要修改2个配置文件
     a,在master上,找到hadoop安装路径下的etc下hadoop文件夹,配置masters和slavers
     b,将master的hadoop安装文件夹,远程拷贝到slaver1、slaver2上
         scp -r /usr/loacal/src/hadoop-2.7.6/ root@slaver1:/usr/loacal/src/hadoop-2.7.6/
         scp -r /usr/loacal/src/hadoop-2.7.6/ root@slaver2:/usr/loacal/src/hadoop-2.7.6/
     c,在master启动集群:start-all.sh,或者分别启动namenode、secondarynamenode、datanode、yarn
8.hadoop启动只有单节点
     原因有很多,一般情况:
         a,master节点上,主机名为localhost的原因
         b,复制过去的usr/loacal/src/hadoop/dfs/data下有一个VERSION,删除这个文件,或者清空data
         c,重新格式化
         d,检查主机名、主机名与IP的映射关系、防火墙是否关闭
 9.查看集群状态
     a,HDFS集群状态:master:50070
     b,secondaryNamenode状态:master:50090
     c,map-reduce运行web界面:master:8088
10.分布式文件系统命令行
     和linux命令一致,不过是多了hdfs dfs的前缀
     上传linux文件到hdfs系统中:hdfs dfs -put
     在hdfs系统中创建文件夹: hdfs dfs -mkdir
     在hdfs系统中查看文件:hdfs dfs -cat
11.运行wordcount例子
         现在linux的root目录下创建data.txt文件,内容为实验文档要求的内容
         在hdfs上创建文件夹:hdfs dfs -mkdir /input
         上传root目录下创建data.txt文件到hdfs系统上,hdfs dfs -put /root/data.txt /input/
         运行wordcount例子,要求在hdfs系统上没有output文件夹,如果有就删掉:
             hadoop jar hadoop安装目录的example wordcount /input/data.txt /output
  
6.Hive组件安装配置
1.Hive是什么?
  
 
Hive是基于Hadoop的数据仓库工具,可以用来对HDFS中存储的数据进行查询和分析。Hive能够将HDFS上结构化的数据文件映射为数据库表,并提供SQL查询功能,将SQL语句转变成MapReduce任务来执行。
Hive对存储在HDFS中的数据进行分析和管理,它可以将结构化的数据文件映射为一张数据库表,通过SQL查询分析需要的内容,查询Hive使用的SQL语句简称Hive SQL(HQL)。
Hive通过简单的SQL语句实现快速调用MapReduce机制进行数据统计分析,因此不必专门开发MapReduce应用程序即可实现大数据分析。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
2.Hive的优缺点
     优点:简单容易上手、可扩展性强、元数据管理、容错性强、延展性强、热扩容
     缺点:HQL表达能力有限、效率较低、调优困难、计算过程可控性差
3.hive组织架构
a,hive与hadoop的关系
 Hive构建在Hadoop之上,HQL中对查询语句的解释、优化、生成查询计划是由Hive完成的。Hive读取的所有数据都是存储在Hadoop文件系统中。Hive查询计划被转化为MapReduce任务,在Hadoop中执行。
b,hive与数据库的关系
 hive支持了绝大多数的语句(如DDL、DML)以及常见的聚合函数、连接查询、条件查询等操作。
 具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析
 Hive不适合用于联机(online)事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。
1.5    Hive的数据存储
 1、Hive中所有的数据都存储在 HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)
 2、只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。
 3、Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。
     db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
     table:在hdfs中表现所属db目录下一个文件夹
     external table:外部表, 与table类似,不过其数据存放位置可以在任意指定路径
 普通表: 删除表后, hdfs上的文件都删了
 External外部表删除后, hdfs上的文件没有删除, 只是把文件删除了
     partition:在hdfs中表现为table目录下的子目录
     bucket:桶, 在hdfs中表现为同一个表目录下根据hash散列之后的多个文件, 会根据不同的文件把数据放到不同的文件中 
1.6 mysql安装
    
 
 # 关闭防火墙服务
     [root@master ~]# systemctl stop firewalld
     # 设置防火墙服务开机不启动
     [root@master ~]# systemctl disable firewalld 
    1.查看之前是否安装过mysql,3个节点都要执行
         #卸载自带环境
         # 查询已安装的 mariadb 软件包
         [root@master software]# rpm -qa |grep mariadb
             mariadb-libs-5.5.68-1.el7.x86_64
         # 卸载 mariadb 软件包
         [root@master software]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64    
         
         #查询并卸载系统老版本的Mysql
         [root@master ~]# rpm -qa |grep mysql
         如果有,就卸载掉
         rpm -e --nodeps 文件名
         
     2.安装libaio依赖环境。
输入指令:rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm
3.安装net-tools依赖环境。
        输入指令:rpm -ivh net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
     
     4.安装mysql服务
         依次输入指令:
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
        rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm --nodeps --force
         将以下配置信息添加到/etc/my.cnf文件symbolic-links=0配置信息的下方。
             default-storage-engine=innodb
             innodb_file_per_table
             collation-server=utf8_general_ci
             init-connect='SET NAMES utf8'
             character-set-server=utf8
    5.启动mysql服务
         输入命令:systemctl start mysqld
         查看mysql服务是否启动/查询 MySQL 数据库状态  service mysqld status
          mysqld 进程状态为 active (running),则表示 MySQL 数据库正常运行。
      如果 mysqld 进程状态为 failed,则表示 MySQL 数据库启动异常。此时需要排查 /etc/my.cnf 文件。
        [root@master software]# service mysqld status
                 Redirecting to /bin/systemctl status mysqld.service
                 ● mysqld.service - MySQL Server
                    Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
                    Active: active (running) since 二 2022-10-25 15:26:49 CST; 15s ago
                      Docs: man:mysqld(8)
                            http://dev.mysql.com/doc/refman/en/using-systemd.html
                   Process: 40033 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
                   Process: 39975 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
     6.重置mysql密码
         查看mysql安装时随机生成的密码。
        输入指令:grep 'temporary password' /var/log/mysqld.log
             或者:cat /var/log/mysqld.log | grep 'temporary password'
         
         执行mysql_secure_installation命令初始化MySQL数据库
         
         [root@master ~]# mysql_secure_installation
         Securing the MySQL server deployment.
 root@localhost: JYgT+Nl)C56=
         
         先输入查到的临时密码
         输入新密码:Password123$
         # 再次输入新密码 Password123$
 # 输入 y
 # 输入 y
 # 输入 n
 # 输入 y
 # 输入 y
 # 添加 root 用户从本地和远程访问 MySQL 数据库表单的授权。
 [root@master ~]# mysql -uroot -p    
 # 输入新设定的密码 Password123$
 mysql> grant all privileges on *.* to root@'localhost'identified by 'Password123$';  # 添加 root 用户本地访问授权
mysql> grant all privileges on *.* to root@'%' identified by'Password123$'; # 添加 root 用户远程访问授权
mysql> flush privileges; # 刷新授权
mysql> select user,host from mysql.user where user='root'; # 查询 root 用户授权情况
 mysql> exit; # 退出 MySQL 数据库
  #  DBPassword=Zabbix@2024
 按照实验步骤设置对应的
    7.解压hive
         [root@master ~]# tar -zxvf /opt/software/apache-hive-2.0.0-bin.tar.gz -C /usr/local/src
         
         将解压后的apache-hive-2.0.0-bin文件夹更名为hive;
         [root@master ~]# mv /usr/local/src/apache-hive-2.0.0-bin usr/local/src/hive
     8.修改环境变量,并使其生效
     [root@master ~]# vim /etc/profile        # 在文件末尾追加以下配置内容
         # set hive environment
         export HIVE_HOME=/usr/local/src/hive
         export PATH=$PATH:$HIVE_HOME/bin
     
     [root@master ~]source /etc/profile  #使环境变量生效
     
     9.修改hive的配置文件
         将/usr/local/src/hive文件夹下hive-default.xml.template文件,更名为hive-site.xml。
         [root@master ~]$ cp /usr/local/src/hive/conf/hive-default.xml.template /usr/local/src/hive/conf/hive-site.xml
    
     通过 vi 编辑器修改 hive-site.xml 文件实现 Hive 连接 MySQL 数据库,并设定Hive 临时文件存储路径。
7  如何在vim下进行快速查找?
  
 
若要向下滚动屏幕,请使用 CTRL + Y ,向上滚动,请使用 CTRL + E
 Linux中使用vim指令进行文档编辑时,有时想快速找到某一行号或某一个关键字,操作如下:
 1、查找n(n是数字)行的方式,打开文档后连续按n、shift+g可以快速定位的n行。
 2、查找关键字,打开文档按“/”,然后输入要查找的内容(会在终端的左下方显示输入内容),最后按回车键可以迅速找到指定内容。
 使用:u可以进入上一步。
 注意要esc在命令状态下。
1、临时显示行号
 只须按ESC键退出编辑内容模式,输入“:” ,再输入“set number”或者“set nu”后按回车键,就可以显示行号。
 行号显示只是暂时的。退出vim后再次打开vim就不显示行号了。
 取消显示行号:输入“:set nonu”
2、永久显示行号
 需要修改vim配置文件vimrc。
 在默认情况下,用户宿主目录(~)中是没有此文件的,需要在当前用户的宿主目录中手工建立,即使用下面的命令:
 vim ~/.vimrc ,在打开的vimrc文件中最后一行输入:set number 或者 set nu,然后保存退出。
 再次用vim打开文件时,就会显示行号
1、vim中用大写的字母G命令跳到文件尾。G命令可以跳到相应的行,默认缺省状态是跳转到最后一行即文件尾。
 2、vim中使用小写的字母gg(按两次)命令跳到文件头。gg命令可以跳到相应的行,默认缺省状态是跳转到第一行即文件头。
     [hadoop@master ~]$ vim /usr/local/src/hive/conf/hive-site.xml
     设置 MySQL 数据库连接
     配置 MySQL 数据库 root 的密码。(需要看hive.txt文件)
     验证元数据存储版本一致性。若默认 false,则不用修改。
     验证元数据存储版本一致性。若默认 false,则不用修改
     配置数据库驱动
     配置数据库用户名 javax.jdo.option.ConnectionUserName 为 root。
     将 以 下 位 置 的 ${system:java.io.tmpdir}/${system:user.name} 替 换 为
     “/usr/local/src/hive/tmp”目录及其子目录。 需要替换以下 4 .5 处配 置
    10.在Hive安装目录中创建临时文件夹tmp。
         [root@master ~]$ mkdir /usr/local/src/hive/tmp
 至此,Hive 组件安装和配置完成
11.初始化hive
    1)将MySQL数据库驱动文件/opt/software/mysql-connector-java-5.1.47.jar
         拷贝到Hive安装目录的/usr/local/src/hive/lib目录下。
         [root@master ~]# cp /opt/software/mysql-connector-java-5.1.47.jar /usr/local/src/hive/lib
     (2)删除/usr/local/src/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar
         文件,若未删除该文件会导致Hive元数据初始化失败。(我们的安装包中已经给大家删除过了)
         [root@master ~]$ rm -f /usr/local/src/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar
    (3)启动Hadoop相关进程。
         [root@master ~]$ start-all.sh
     12.使用schematool升级元数据,将Hive的元数据重新写入MySQL数据库中。
         [root@master ~]$ schematool -initSchema -dbType mysql
         Metastore connection URL:        jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false
         Metastore Connection Driver :    com.mysql.jdbc.Driver
         Metastore connection User:       root
         Starting metastore schema initialization to 2.0.0
         Initialization script hive-schema-2.0.0.mysql.sql
         Initialization script completed
         schemaTool completed
         以上命令结果显示schemaTool completed,则表示Hive元数据写入MySQL数据库成功。
    13.启动hive
     (1)在系统的任意目录下,执行hive命令即可启动Hive组件。
         [root@master ~]$ hive
        
     如果初始化失败,检查mysql数据库中有没有hive这样一个数据库,如果有,把他删掉,然后重新初始化
  
8. zookeeper组件的安装与配置
 
 
1.zookeeper是什么?
 Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务
     A、zookeeper是为别的分布式程序服务的
     B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
     C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……
     D、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:
         管理(存储,读取)用户程序提交的数据;
         并为用户程序提供数据节点监听服务;
2.zookeeper的特点
     (1)顺序一致性:从同一客户端发起的事务请求,最终将会严格地按照顺序被应用到ZooKeeper中去。
     (2)原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,要么整个集群中所有的机器都成功应用了某一个事务,要么都没有应用。
     (3)单一系统映像:无论客户端连到哪一个ZooKeeper服务器上,其看到的服务端数据模型都是一致的。
     (4)可靠性:一旦一次更改请求被应用,更改的结果就会被持久化,直到被下一次更改覆盖。
3.zookeeper的角色和工作机制
 在ZooKeeper中没有选择传统的Master/Slave概念,而是引入了leader、follower和observer三种角色。ZooKeeper集群中的所有机器通过一个leader选举过程来选定一台称为“leader”的机器,leader既可以为客户端提供写服务又能提供读服务。
 除了leader外,follower和observer都只能提供读服务。follower和observer唯一的区别在于observer机器不参与leader的选举过程,也不参与写操作的“过半写成功”策略,
Leader是通过内部的选举机制临时产生的
 以一个简单的例子来说明整个选举的过程.
 假设有五台服务器组成的zookeeper集群,它们的id从1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的.假设这些服务器依序启动,来看看会发生什么.
 1) 服务器1启动,此时只有它一台服务器启动了,它发出去的报没有任何响应,所以它的选举状态一直是LOOKING状态
 2) 服务器2启动,它与最开始启动的服务器1进行通信,互相交换自己的选举结果,由于两者都没有历史数据,所以id值较大的服务器2胜出,但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是3),所以服务器1,2还是继续保持LOOKING状态.
 3) 服务器3启动,根据前面的理论分析,服务器3成为服务器1,2,3中的老大,而与上面不同的是,此时有三台服务器选举了它,所以它成为了这次选举的leader.
 4) 服务器4启动,根据前面的分析,理论上服务器4应该是服务器1,2,3,4中最大的,但是由于前面已经有半数以上的服务器选举了服务器3,所以它只能接收当小弟的命了.
 5) 服务器5启动,同4一样,当小弟.
4.zookeeper集群搭建
 在master节点上:
 (1)ZooKeeper的安装包zookeeper-3.4.8.tar.gz已放置在Linux系统/opt/software目录下。
 (2)解压安装包到指定目标,在Master节点执行如下命令。
 [root@master software]# tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/src/
 [root@master src]# mv zookeeper-3.4.5 zookeeper
 (3)在 ZooKeeper 的安装目录下创建 data 和 logs 文件夹。
 [root@master ~]# cd /usr/local/src/zookeeper
 [root@master zookeeper]# mkdir data && mkdir logs
 (4)将编号写入myid文件内
 [root@master zookeeper]# echo 1 > data/myid
 (5)修改配置文件
 [root@master zookeeper]# cp conf/zoo_sample.cfg conf/zoo.cfg
 [root@master zookeeper]# vi /usr/local/src/zookeeper/conf/zoo.cfg
 修改内容:
 dataDir=/usr/local/src/zookeeper/data
 dataLogDir=/usr/local/zookeeper/logs
 在zoo.cfg文件末尾加上:
 server.1=master:2888:3888
 server.2=slave1:2888:3888
 server.3=slave2:2888:3888
 (6)从master节点将zookeeper拷贝到slaver1、slaver2上
 [root@master ~] # scp -r /usr/local/src/zookeeper root@slave1:/usr/local/src/
 在slaver1上修改/usr/local/src/zookeeper/data/myid,将里面数字改成2
 [root@slaver1 ~]vim /usr/local/src/zookeeper/data/myid
 [root@master ~] # scp -r /usr/local/src/zookeeper root@slave2:/usr/local/src/
 在slaver2上修改/usr/local/src/zookeeper/data/myid,将里面数字改成3
 [root@slaver2 ~]vim /usr/local/src/zookeeper/data/myid
 (7)master上修改环境变量
 [root@master ~]vim /etc/profile
 export ZOOKEEPER_HOME=/usr/local/src/zookeeper
 # ZooKeeper 可执行程序目录
 export PATH=$PATH:$ZOOKEEPER_HOME/bin
 (8)把master的/etc/profile拷贝到slaver1,slaver2上
 scp /etc/profile root@slave1:/etc/profile
 scp /etc/profile root@slave2:/etc/profile
 分别在每个节点上,执行命令:source /etc/profile,让环境变量生效
 (9)在每个节点上启动zookeeper
 [root@master ~] zkServer.sh start
 [root@slave1 ~] zkServer.sh start
 [root@slave2 ~] zkServer.sh start
 (10)查看zookeeper运行状态
 在每个节点执行命令:
 [root@master ~]$ zkServer.sh status
 [root@slave1 ~]$ zkServer.sh status
 [root@slave2 ~]$ zkServer.sh status
9. HBASE组件的安装与配置
 
 
1.什么是HBASE?
 HBase是一个依赖zookeeper的高可靠的列式存储的非关系型数据库
2.HBase主要特性
     面向列设计:面向列表(簇)的存储和权限控制,列(簇)独立检索。
     支持多版本:每个单元中的数据可以有多个版本,默认情况下,版本号可自动分配,版本号就是单元格插入时的时间戳。
     稀疏性:为空的列不占用存储空间,表可以设计得非常稀疏。
     高可靠性:WAL机制保证了数据写入时不会因集群异常而导致写入数据丢失,Replication机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。
     高性能:底层的据结构和Rowkey有序排列等架构上的独特设计,使得HBase具有非常高的写入性能。通过科学性地设计RowKey可让数据进行合理的Region切分,主键索引和缓存机制使得HBase在海量数据下具备高速的随机读取性能。
 3.HBase(NoSQL)与RDBMS的区别
     1.数据类型:Hbase只有简单的数据类型,只保留字符串;传统数据库有丰富的数据类型。
     2.数据操作:Hbase只有简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系;传统数据库通常有各式各样的函数和连接操作。
     3.存储模式:Hbase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,这样的好处是数据即是索引,访问查询涉及的列大量降低系统的I/O,并且每一列由一个线索来处理,可以实现查询的并发处理;传统数据库是基于表格结构和行存储,其没有建立索引将耗费大量的I/O并且建立索引和物化试图需要耗费大量的时间和资源。
     4.数据维护:Hbase的更新实际上是插入了新的数据;传统数据库只是替换和修改。
     5.可伸缩性:Hbase可以轻松的增加或减少硬件的数目,并且对错误的兼容性比较高;传统数据库需要增加中间层才能实现这样的功能。
     6.事务:Hbase只可以实现单行的事务性,意味着行与行之间、表与表之前不必满足事务性;传统数据库是可以实现跨行的事务性。
4.HBASE架构
 HBase的架构是依托于Hadoop的HDFS作为最基本存储基础单元,在HBase的集群中由一个Master主节点管理多个RegionServer,而ZooKeeper进行协调操作。
 (1)HMaster
 HMaster用于启动任务管理多个HRegionServer,侦测各个HRegionServer之间的状态,当一个新的HRegionServer登录到HMaster时,HMaster会告诉它等待分配数据。而当某个HRegionServer死机时,HMaster会把它负责的所有HRegion标记为未分配,并恢复HRegionServer的故障。
 (2)HRegionServer
 HBase中的所有数据从底层来说一般都是保存在HDFS中的,用户通过一系列HRegionServer获取这些数据。HRegionServer主要负责响应用户I/O请求,向HDFS文件系统读写数据,是HBase中最核心的模块。
 (3)ZooKeeper
 Apache ZooKeeper起源于Hadoop的分布式协同服务,是负责协调集群中的分布式组件,经过多年的发展ZooKeeper已经成为了分布式大数据框架中容错性的标准框架,被多个分布式开源框架所应用。
5.一个图,了解列式存储和HBASE读写过程
6.HBASE安装与配置
     1.解压缩 HBase 安装包
 [root@master ~]# tar -zxvf /opt/software/hbase-1.2.1-bin.tar.gz -C  /usr/local/src/
     2.重命名 HBase 安装文件夹、设置环境变量
 [root@master ~]# cd /usr/local/src/ 
 [rootp@master src]#mv hbase-1.2.1 hbase
     在所有节点添加环境变量
 [root@master ~]# vim /etc/profile
 # set hbase environment
 export HBASE_HOME=/usr/local/src/hbase
 export PATH=$HBASE_HOME/bin:$PATH
     在所有节点使环境变量生效
 [rootmaster ~]# source /etc/profile
 将master节点的/etc/profile文件远程拷贝到slaver1、slaver2上
 scp -r /etc/profile root@slave1:/etc/profile
 scp -r /etc/profile root@slave2:/etc/profile
     3.修改配置文件hbase-env.sh
     [root@master ~]# cd /usr/local/src/hbase/conf/      (找自己hadoop软件的安装路径)
     [root @master conf]# vim hbase-env.sh 
     #Java 安装位置
     export JAVA_HOME=/usr/local/src/jdk1.8.0_181        ( 找自己hadoop软件的jdk安装路径)
     #值为 true 使用 HBase 自带的 ZooKeeper,值为 false 使用在 Hadoop 上装的 ZooKeeper
     export HBASE_MANAGES_ZK=false 
     #HBase 类路径
     export HBASE_CLASSPATH=/usr/local/src/hadoop/etc/hadoop/  
                  (找自己hadoop软件的安装路径)
    4.修改配置文件hbase-site.xml
     按照实验文档上的添加即可
     vim hbase-site.xml
 <configuration>
 <property>
 <name>hbase.rootdir</name>
 <value>hdfs://master:9000/hbase</value>
 <description>The directory shared by region servers.</description>
 </property>
 <property>
 <name>hbase.master.info.port</name>
 <value>60010</value>
 <description>使用 master 节点 60010 端口
 </description>
 </property>
<property>
 <name>hbase.zookeeper.property.clientPort</name>
 <value>2181</value>
 <description>Property from ZooKeeper's config zoo.cfg. The port at
 which the clients will connect.使用 master 节点 2181 端口
 </description>
 </property>
<property>
 <name>zookeeper.session.timeout</name>
 <value>120000</value>
 <description>ZooKeeper 超时时间
 </description>
 </property>
<property>
 <name>hbase.zookeeper.quorum</name>
 <value>master,slave1,slave2</value>
 <description>ZooKeeper 管理节点
 </description>
<property>
 <name>hbase.tmp.dir</name>
 <value>/usr/local/src/hbase/tmp</value>
 <description>HBase 临时文件路径
 </description>
 </property>
<property>
 <name>hbase.cluster.distributed</name>
 <value>true</value>
 <description>使用分布式 HBase
 </description>
 </property>
 </configuration>
    5.在 master  节点修改 regionservers  文件
     #删除 localhost,每一行写一个 slave 节点主机机器名
     [root @master conf]$ vim regionservers 
         slave1
         slave2
     
     6.在 master 节点创建 hbase.tmp.dir 目录
     [root @master usr]# mkdir /usr/local/src/hbase/tmp
     7.将 master 上的 hbase 安装文件同步到 slave1 slaver2
     [root @master ~]# scp -r /usr/local/src/hbase/ root@slave1:/usr/local/src/
     [root @master ~]# scp -r /usr/local/src/hbase/ root@slave2:/usr/local/src/
     8.启动hbase
         先在master上把hadoop启动起来,然后在每个节点上启动zookeeper
         最后在master上执行命令:start-hbase.sh启动hbase
         在浏览器输入master:60010看hbase的web监控界面
 在 master 节点启动 Hadoop
     start-dfs.sh
     start-yarn.sh
 [root@master ~]# jps
 5220 ResourceManager
 5687 Jps
 4473 NameNode
 4937 SecondaryNameNode
 5338 NodeManager(因为每个人配的不一样所以后两个进程也可能没有,有前四个进程即启动成功)
 4638 DataNode
 [root@slave1 ~]# jps
 4963 Jps
 4745 NodeManager
 4525 DataNode
 [root@slave2 ~]# jps
 4739 Jps
 4309 DataNode
 4510 NodeManager
在所有节点启动 ZooKeeper
 master节点,slave1,2节点均出现 QuorumPeerMain进程即启动成功
 zkServer.sh start
jps
在 master  节点启动 HBase
 master节点出现HMaster进程,slave1,2节点均出现HRegionServer进程即启动成功
start-hbase.sh
 jps
在master节点stop-hbase.sh
在所有节点    zkServer.sh stop
 在master节点    
     stop-yarn.sh
     stop-dfs.sh
10. Flume
tar zxvf /opt/software/apache-flume-1.7.0-bin.tar.gz -C /usr/local/
 [root@master ~]# cd /usr/local/
 [root@master local]# mv apache-flume-1.7.0-bin/ flume# 修改Flume安装路径文件夹
[root@master local]# chown -R root:root flume/#  修改文件夹flume/归属用户和归属组为root 用户和 root组
 使用 root  用户设置 Flume 
[root@master local]# vim /etc/profile # 编辑系统环境变量配置文件
# set flume environment
 export FLUME_HOME=/usr/local/src/flume # Flume 安装路径
 export PATH=$PATH:$FLUME_HOME/bin  # 添加系统 PATH 环境变量
 source /etc/profile
 :修改 Flume  相应配置文件。
 cd /usr/local/src/flume/conf
拷贝 flume-env.sh.template 文件并重命名为 flume-env.sh。
 [hadoop@master ~]$cp flume-env.sh.template flume-env.sh
步骤三:修改并配置 flume-env.sh 文件。删除 JAVA_HOME 变量前的注释,修改为 JDK 的安装路径。
[hadoop@master ~]$ vi /usr/local/src/flume/conf/flume-env.sh
 # 修改 JAVA_HOME 参数值为 jdk 安装路径
 export JAVA_HOME=/usr/local/src/jdk1.8.0_152
 使用 flume-ng version 命令验证安装是否成功,若能够正常查询 Flume 组件版本为
 1.6.0,则表示安装成功。
若输入 : flume-ng version 报错
错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty
 Flume 1.7.0
 Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
 Revision: 511d868555dd4d16e6ce4fedc72c2d1454546707
 Compiled by bessbd on Wed Oct 12 20:51:10 CEST 2016
 From source with checksum 0d21b3ffdc55a07e1d08875872c00523
 解决办法
[root@master bin]# cd /usr/local/flume//bin/
 [root@master bin]# vim flume-ng
在75行
 java.library.path后面 括号里添加
  
 2>/dev/null | grep hadoop
 在110行
 java.library.path后面 括号里添加
  
 2>/dev/null | grep hbase
[root@master bin]# flume-ng version
 Flume 1.7.0
 Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
 Revision: 511d868555dd4d16e6ce4fedc72c2d1454546707
 Compiled by bessbd on Wed Oct 12 20:51:10 CEST 2016
 From source with checksum 0d21b3ffdc55a07e1d08875872c00523
 安装成功
    
     
     注:该文档是我两年前参考了很多相关官方技术文档,当时一边配一边写的,按命令配完戈组件均可运行 当时配了3遍流程,按流程走完,直接立马运行。
    
     
     
     
     
     
     
     
     
     
     
     
     
  










