离线数仓-项目组件安装(Hadoop、Zookeeper、Kafka、Flume、Sqoop、Hive、Hbase)

Hadoop安装

Hadoop部署

(1)集群部署规划

hadoop102 hadoop103 hadoop104
HDFS NameNodeDataNode DataNode SecondaryNameNodeDataNode
YARN NodeManager ResourceManagerNodeManager NodeManager

注意:NameNode和SecondaryNameNode不要安装在同一台服务器

注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

(2)用XShell工具将hadoop-3.1.3.tar.gz导入到opt目录下面的software文件夹下面

(3)进入到Hadoop安装包路径下

[atguigu@hadoop102 ~]$ cd /opt/software/

(4)解压安装文件到/opt/module下面

[atguigu@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

(5)查看是否解压成功

[atguigu@hadoop102 software]$ ls /opt/module/
hadoop-3.1.3

(6)将Hadoop添加到环境变量

  • 获取Hadoop安装路径

    [atguigu@hadoop102 hadoop-3.1.3]$ pwd
    /opt/module/hadoop-3.1.3
    
  • 打开/etc/profile.d/my_env.sh文件

    [atguigu@hadoop102 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh
    

    在profile文件末尾添加JDK路径:(shitf + g)

    ##HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
  • 保存后退出

  • 分发环境变量文件

    [atguigu@hadoop102 hadoop-3.1.3]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh
    
  • source一下,使之生效(3台节点)

    [atguigu@hadoop102 module]$ source /etc/profile.d/my_env.sh
    [atguigu@hadoop103 module]$ source /etc/profile.d/my_env.sh
    [atguigu@hadoop104 module]$ source /etc/profile.d/my_env.sh
    

配置集群

(1)核心配置文件

配置core-site.xml:

[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguigu@hadoop102 hadoop]$ vim core-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>
    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>atguigu</value>
    </property>

    <!-- 配置该atguigu(superUser)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.atguigu.hosts</name>
        <value>*</value>
    </property>
    <!-- 配置该atguigu(superUser)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.atguigu.groups</name>
        <value>*</value>
    </property>
    <!-- 配置该atguigu(superUser)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.atguigu.users</name>
        <value>*</value>
    </property>
</configuration>

(2)HDFS配置文件

配置hdfs-site.xml:

[atguigu@hadoop102 hadoop]$ vim hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>

    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>

    <!-- 测试环境指定HDFS副本的数量1 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

(3)YARN配置文件

配置yarn-site.xml:

[atguigu@hadoop102 hadoop]$ vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</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</value>
    </property>

    <!-- yarn容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    <!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>

    <!-- 关闭yarn对虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

(4)MapReduce配置文件

配置mapred-site.xml:

[atguigu@hadoop102 hadoop]$ vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

(5)配置workers

[atguigu@hadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容:

hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

(1)配置mapred-site.xml

[atguigu@hadoop102 hadoop]$vi mapred-site.xml

在该文件里面增加如下配置:

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。

开启日志聚集功能具体步骤如下:

配置yarn-site.xml

[atguigu@hadoop102 hadoop]$ vim yarn-site.xml

在该文件里面增加如下配置。

<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>

<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

分发Hadoop

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/

群起集群

(1)如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

[atguigu@hadoop102 hadoop-3.1.3]$ bin/hdfs namenode -format

(2)启动HDFS

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

(3)**在配置了ResourceManager的节点(hadoop103)**启动YARN

[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

(4)Web端查看HDFS的Web页面:http://hadoop102:9870/

Hadoop群起脚本

(1)来到/home/atguigu/bin目录

[atguigu@hadoop102 bin]$ pwd
/home/atguigu/bin

(2)编辑脚本

[atguigu@hadoop102 bin]$ vim hdp.sh

输入如下内容:

#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

(3)修改脚本执行权限

[atguigu@hadoop102 bin]$ chmod 777 hdp.sh

ZooKeeper安装

分布式安装部署

(1)集群规划

服务器hadoop102 服务器hadoop103 服务器hadoop104
Zookeeper Zookeeper Zookeeper Zookeeper

(2)解压安装

  • 解压Zookeeper安装包到/opt/module/目录下

    [atguigu@hadoop102 software]$ tar -zxvf zookeeper-3.5.7.tar.gz -C /opt/module/
    
  • 修改/opt/module/apache-zookeeper-3.5.7-bin名称为zookeeper-3.5.7

    [atguigu@hadoop102 module]$ mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7
    
  • 同步/opt/module/zookeeper-3.5.7目录内容到hadoop103、hadoop104

    [atguigu@hadoop102 module]$ xsync zookeeper-3.5.7/
    

(3)配置服务器编号

  • 在/opt/module/zookeeper-3.5.7/这个目录下创建zkData

    [atguigu@hadoop102 zookeeper-3.5.7]$ mkdir zkData
    
  • 在/opt/module/zookeeper-3.5.7/zkData目录下创建一个myid的文件

    [atguigu@hadoop102 zkData]$ vi myid
    

    添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码。在文件中添加与server对应的编号:

    2
    
  • 拷贝配置好的zookeeper到其他机器上

    [atguigu@hadoop102 zkData]$ xsync myid
    

    并分别在hadoop103、hadoop104上修改myid文件中内容为3、4

(4)配置zoo.cfg文件

  • 重命名/opt/module/zookeeper-3.5.7/conf这个目录下的zoo_sample.cfg为zoo.cfg

    [atguigu@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg
    
  • 打开zoo.cfg文件

    [atguigu@hadoop102 conf]$ vim zoo.cfg
    

    修改数据存储路径配置

    dataDir=/opt/module/zookeeper-3.5.7/zkData
    

    增加如下配置:

    #######################cluster##########################
    server.2=hadoop102:2888:3888
    server.3=hadoop103:2888:3888
    server.4=hadoop104:2888:3888
    
  • 同步zoo.cfg配置文件

    [atguigu@hadoop102 conf]$ xsync zoo.cfg
    
  • 配置参数解读

    server.A=B:C:D。
    

    A是一个数字,表示这个是第几号服务器;

    集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。

    B是这个服务器的地址;

    C是这个服务器Follower与集群中的Leader服务器交换信息的端口;

    D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

(5)集群操作

  • 分别启动Zookeeper

    [atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start
    [atguigu@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
    [atguigu@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh start
    
  • 查看状态

    [atguigu@hadoop102 zookeeper-3.5.7]# bin/zkServer.sh status
    JMX enabled by default
    Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
    Mode: follower
    [atguigu@hadoop103 zookeeper-3.5.7]# bin/zkServer.sh status
    JMX enabled by default
    Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
    Mode: leader
    [atguigu@hadoop104 zookeeper-3.4.5]# bin/zkServer.sh status
    JMX enabled by default
    Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
    Mode: follower
    

群起脚本

ZK集群启动停止脚本:

(1)在hadoop102的/home/atguigu/bin目录下创建脚本

[atguigu@hadoop102 bin]$ vim zk.sh

在脚本中编写如下内容:

#!/bin/bash

case $1 in
"start"){
    
    
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 启动 ------------
		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
	done
};;
"stop"){
    
    
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 停止 ------------    
		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
	done
};;
"status"){
    
    
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 状态 ------------    
		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
	done
};;
esac

(2)增加脚本执行权限

[atguigu@hadoop102 bin]$ chmod u+x zk.sh

(3)Zookeeper集群启动脚本

[atguigu@hadoop102 module]$ zk.sh start

(4)Zookeeper集群停止脚本

[atguigu@hadoop102 module]$ zk.sh stop

客户端命令行操作

命令基本语法 功能描述
help 显示所有操作命令
ls path 使用 ls 命令来查看当前znode的子节点-w 监听子节点变化-s 附加次级信息
create 普通创建-s 含有序列-e 临时(重启或者超时消失)
get path 获得节点的值-w 监听节点内容变化-s 附加次级信息
set 设置节点的具体值
stat 查看节点状态
delete 删除节点
deleteall 递归删除节点

启动客户端

[atguigu@hadoop103 zookeeper-3.5.7]$ bin/zkCli.sh

Kafka安装

集群规划

hadoop102 hadoop103 hadoop104
zk zk zk
kafka kafka kafka

jar包下载

http://kafka.apache.org/downloads

集群部署

(1)解压安装包

[atguigu@hadoop102 software]$ tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/module/

(2)修改解压后的文件名称

[atguigu@hadoop102 module]$ mv kafka_2.11-2.4.1/ kafka

(3)在/opt/module/kafka目录下创建logs文件夹

[atguigu@hadoop102 kafka]$ mkdir logs

(4)修改配置文件

[atguigu@hadoop102 kafka]$ cd config/
[atguigu@hadoop102 config]$ vi server.properties
修改或者增加以下内容:
#broker的全局唯一编号,不能重复
broker.id=0
#删除topic功能使能
delete.topic.enable=true
#kafka运行日志存放的路径
log.dirs=/opt/module/kafka/data
#配置连接Zookeeper集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

(5)配置环境变量

[atguigu@hadoop102 module]$ sudo vi /etc/profile.d/my_env.sh
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

[atguigu@hadoop102 module]$ source /etc/profile.d/my_env.sh

(6)分发安装包

[atguigu@hadoop102 module]$ xsync kafka/
注意:分发之后记得配置其他机器的环境变量

(7)分别在hadoop103和hadoop104上修改配置文件/opt/module/kafka/config/server.properties中的broker.id=1、broker.id=2

注:broker.id不得重复

(8)启动集群

依次在hadoop102、hadoop103、hadoop104节点上启动kafka
[atguigu@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties
[atguigu@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon  /opt/module/kafka/config/server.properties
[atguigu@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon  /opt/module/kafka/config/server.properties

(9)关闭集群

[atguigu@hadoop102 kafka]$ bin/kafka-server-stop.sh
[atguigu@hadoop103 kafka]$ bin/kafka-server-stop.sh
[atguigu@hadoop104 kafka]$ bin/kafka-server-stop.sh

群起脚本

(1)在/home/atguigu/bin目录下创建脚本kf.sh

[atguigu@hadoop102 bin]$ vim kf.sh

在脚本中填写如下内容:

#! /bin/bash

case $1 in
"start"){
    
    
    for i in hadoop102 hadoop103 hadoop104
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
    done
};;
"stop"){
    
    
    for i in hadoop102 hadoop103 hadoop104
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"
    done
};;
esac

(2)增加脚本执行权限

[atguigu@hadoop102 bin]$ chmod u+x kf.sh

(3)kf集群启动脚本

[atguigu@hadoop102 module]$ kf.sh start

(4)kf集群停止脚本

[atguigu@hadoop102 module]$ kf.sh stop

Kafka常用命令

(1)查看Kafka Topic列表

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka --list

(2)创建Kafka Topic

进入到/opt/module/kafka/目录下创建日志主题

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka  --create --replication-factor 1 --partitions 1 --topic topic_log

(3)删除Kafka Topic

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --delete --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka --topic topic_log

(4)Kafka生产消息

[atguigu@hadoop102 kafka]$ bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic topic_log
>hello world
>atguigu  atguigu

(5)Kafka消费消息

[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic topic_log

–from-beginning:会把主题中以往所有的数据都读取出来。根据业务场景选择是否增加该配置。

(6)查看Kafka Topic详情

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka --describe --topic topic_log

Flume安装

安装地址:

(1) Flume官网地址:http://flume.apache.org/

(2)文档查看地址:http://flume.apache.org/FlumeUserGuide.html

(3)下载地址:http://archive.apache.org/dist/flume/

安装部署:

(1)将apache-flume-1.9.0-bin.tar.gz上传到linux的/opt/software目录下

(2)解压apache-flume-1.9.0-bin.tar.gz到/opt/module/目录下

[atguigu@hadoop102 software]$ tar -zxf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/

(3)修改apache-flume-1.9.0-bin的名称为flume

[atguigu@hadoop102 module]$ mv /opt/module/apache-flume-1.9.0-bin /opt/module/flume

(4)将lib文件夹下的guava-11.0.2.jar删除以兼容Hadoop 3.1.3

[atguigu@hadoop102 module]$ rm /opt/module/flume/lib/guava-11.0.2.jar

注意:删除guava-11.0.2.jar的服务器节点,一定要配置hadoop环境变量。否则会报如下异常。

Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Lists
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more

(5)将flume/conf下的flume-env.sh.template文件修改为flume-env.sh,并配置flume-env.sh文件

[atguigu@hadoop102 conf]$ mv flume-env.sh.template flume-env.sh
[atguigu@hadoop102 conf]$ vi flume-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212

Sqoop安装

(1)下载并解压

下载地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.6/

(2)上传安装包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz到hadoop102的/opt/software路径中

(3)解压sqoop安装包到指定目录,如:

[atguigu@hadoop102 software]$ tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/

(4)解压sqoop安装包到指定目录,如:

[atguigu@hadoop102 module]$ mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop

(4)修改配置文件

  • 进入到/opt/module/sqoop/conf目录,重命名配置文件

    [atguigu@hadoop102 conf]$ mv sqoop-env-template.sh sqoop-env.sh
    
  • 修改配置文件

    [atguigu@hadoop102 conf]$ vim sqoop-env.sh 
    

    ​ 增加如下内容

    export HADOOP_COMMON_HOME=/opt/module/hadoop-3.1.3
    export HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3
    export HIVE_HOME=/opt/module/hive
    export ZOOKEEPER_HOME=/opt/module/zookeeper-3.5.7
    export ZOOCFGDIR=/opt/module/zookeeper-3.5.7/conf
    

(5)拷贝JDBC驱动

  • 将mysql-connector-java-5.1.48.jar 上传到/opt/software路径

  • 进入到/opt/software/路径,拷贝jdbc驱动到sqoop的lib目录下

    [atguigu@hadoop102 software]$ cp mysql-connector-java-5.1.48.jar /opt/module/sqoop/lib/
    

(6)验证Sqoop

  • 我们可以通过某一个command来验证sqoop配置是否正确:

    [atguigu@hadoop102 sqoop]$ bin/sqoop help
    
  • 出现一些Warning警告(警告信息已省略),并伴随着帮助命令的输出:

    Available commands:
      codegen            Generate code to interact with database records
      create-hive-table     Import a table definition into Hive
      eval               Evaluate a SQL statement and display the results
      export             Export an HDFS directory to a database table
      help               List available commands
      import             Import a table from a database to HDFS
      import-all-tables     Import tables from a database to HDFS
      import-mainframe    Import datasets from a mainframe server to HDFS
      job                Work with saved jobs
      list-databases        List available databases on a server
      list-tables           List available tables in a database
      merge              Merge results of incremental imports
      metastore           Run a standalone Sqoop metastore
      version            Display version information
    

(7)测试Sqoop是否能够成功连接数据库

[atguigu@hadoop102 sqoop]$ bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password 000000

出现如下输出:

information_schema
metastore
mysql
oozie
performance_schema

Hive安装

下载地址:https://mirror.bit.edu.cn/apache/hive/

  1. 把 apache-hive-3.1.2-bin.tar.gz 上传到 linux 的/opt/software 目录下

  2. 解压 apache-hive-3.1.2-bin.tar.gz 到/opt/module/目录下面

    tar -zxvf
    
  3. 修改 apache-hive-3.1.2-bin 的名称为 hive

    mv  apache-hive-3.1.2-bin/ hive
    
  4. 修改/etc/profile.d/my_env.sh,添加环境变量

    sudo vim /etc/profile.d/my_env.sh
    

    添加如下:

    #HIVE_HOME
    export HIVE_HOME=/opt/module/hive
    export PATH=$PATH:$HIVE_HOME/bin
    

    重启Xshell对话框或者source一下 /etc/profile.d/my_env.sh文件,使环境变量生效

    source /etc/profile.d/my_env.sh
    
  5. 配置hive-site.xml文件

    1. 先将hive-default.xml.template 改名为hive-site.xml

    2. 配置配置MYsql数据库的数据地址,javax.jdo.option.ConnectionURL

      jdbc:mysql://hadoop102:3306/metastore?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC
      
    3. 配置数据驱动,javax.jdo.option.ConnectionDriverName 修改成

      com.mysql.jdbc.Driver
      
    4. 修改数据库的用户名,javax.jdo.option.ConnectionUserName,改成你数据库的用户名就行了

    5. 修改数据库密码,javax.jdo.option.ConnectionPassword,改成你数据库的密码就行了

  6. 此时你初始化数据库会发现还会报一个错

    org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
    Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver
    Use --verbose for detailed stacktrace.
    

    缺少数据库驱动

    下载吧http://60.179.33.239:2811/e/file/download?code=6f237dfd356adfb6&id=44319

    ​ 下载好之后放到我们的hive的lib目录下就行了

  7. 初始化数据库

./bin/schematool -dbType mysql -initSchema -verbose

最好在hive中测试一下,确保没问题,输入命令./bin/hive进入hive客户端,测试一下

show databases;

如果没有报错应该没什么问题了。

Hbase安装

(1) Zookeeper正常部署

首先保证Zookeeper集群的正常部署,并启动之:

[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start
[atguigu@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
[atguigu@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh start

(2) Hadoop正常部署

Hadoop集群的正常部署并启动:

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

(3) Hbase的解压

解压Hbase到指定目录:

[atguigu@hadoop102 software]$ tar -zxvf hbase-2.0.5-bin.tar.gz -C /opt/module

(4)HBase的配置文件

修改HBase对应的配置文件。

  • hbase-env.sh修改内容:
export HBASE_MANAGES_ZK=false
  • hbase-site.xml修改内容:
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoop102:8020/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop102,hadoop103,hadoop104</value>
  </property>
</configuration>
  • regionservers:

    hadoop102
    hadoop103
    hadoop104
    
  • 软连接hadoop配置文件到HBase:

    [atguigu@hadoop102 module]$ ln -s /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml
    [atguigu@hadoop102 module]$ ln -s /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml
    

(5)HBase远程发送到其他集群

[atguigu@hadoop102 module]$ xsync hbase/

(6)HBase服务的启动

  • 启动方式一

    [atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start master
    [atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start regionserver
    

    提示:如果集群之间的节点时间不同步,会导致regionserver无法启动,抛出ClockOutOfSyncException异常。

    修复提示:

    • 同步时间服务

    • 属性:hbase.master.maxclockskew设置更大的值

      <property>
          <name>hbase.master.maxclockskew</name>
          <value>180000</value>
          <description>Time difference of regionserver from master</description>
      </property>
      
  • 启动方式二

    atguigu@hadoop102 hbase]$ bin/start-hbase.sh
    

    对应的停止服务:

    [atguigu@hadoop102 hbase]$ bin/stop-hbase.sh
    

(7) 查看HBase页面

启动成功后,可以通过“host:port”的方式来访问HBase管理页面,例如:http://hadoop102:16010

猜你喜欢

转载自blog.csdn.net/qq_44766883/article/details/130988630