hadoop集群及hive搭建


hadoop集群及hive搭建

一、hadoop集群规划:

  安装VMvare,使用三台centos 7虚拟机进行集群搭建,每台虚拟机的规划

主机名 ip 用户 hdfs yarn
node1 待定 node1 NameNode、DataNode NodeManager、ResourceManager

node2

待定 node2 DataNode、SecondaryNameNode NodeManager
node3 待定 node3 DataNode NodeManager

jdk:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html

hadoop:http://archive.apache.org/dist/hadoop/core/

mysql:https://dev.mysql.com/downloads/file/?id=509630

hive:https://dlcdn.apache.org/hive/hive-3.1.2/

jar包:

链接:https://pan.baidu.com/s/16-IFEQrEPWSUzx16_f43Ag
提取码:tf3j

二、网络配置

2.1 、ip映射

默认没有vim编辑器,可以执行命令进行安装(出现提示,输入y即可)

vim install vim

打开hosts文件,新增三条与主机的映射关系(三台主机都要修改)

vim /etc/hosts
192.168.52.128 node1.itcast.cn node1
192.168.52.129 node2.itcast.cn node2
192.168.52.130 node3.itcast.cn node3

打开hostname文件,修改源ip

node1服务

vim /etc/hostname

修改为 node1

nide2服务

vim /etc/hostname

修改为 node2

nide3服务

vim /etc/hostname

修改为 node3

2.2、关闭禁用防火墙

关闭防火墙

systemctl stop firewalld.service

禁用防火墙

systemctl disable firewalld.service

查看当前状态(出现dead表示成功)

systemctl status firewalld.service

2.3、设置ssh免密登录

ssh node1(进行ssh登录测试)

ssh-keygen

4个回车 生成公钥、私钥

ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

 

2.4、集群时间同步

如果未发现命令进行安装

yum install ntpdate
ntpdate ntp5.aliyun.com

2.5、jdk安装配置

创建统一工作目录

mkdir -p /export/server/

软件安装目录

mkdir -p /export/data/

数据存储路径

jdk安装配置环境配置
将jdk安装包上传到 /export/server/
将压缩包解压到当前目录

tar -zxvf jdk-8u291-linux-x64.tar.gz

将无用的安装包删除

rm -rf jdk-8u291-linux-x64.tar.gz

配置环境变量

vim /etc/profile

在文件最后面加上

export JAVA_HOME=/export/server/jdk1.8.0_291
export PATH=$PATH:$JAVA_HOME/bin

重新加载profile文件

source /etc/profile

测试jdk是否配置成功

java -version
scp -r /export/server/jdk1.8.0_291/ root@node2:/export/server/

scp -r /export/server/jdk1.8.0_291/ root@node3:/export/server/

scp /etc/profile root@node2:/etc/profile

scp /etc/profile root@node3:/etc/profile

2.6、Hadoop安装配置

将jdk安装包上传到 /export/server/
将压缩包解压到当前目录

tar -zxvf hadoop-3.3.0.tar.gz

将无用的安装包删除

rm -rf hadoop-3.3.0.tar.gz 

<1>、配置hadoop-env.sh

进入到/export/server/hadoop-3.3.0/etc/hadoop目录下

export JAVA_HOME=/export/server/jdk1.8.0_291

export HDFS_NAMENODE_USER=root
export HDFS_DATENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

<2>、配置core-site.xml文件

    
    <property>
        <name>fs.defaultFSname>
        <value>hdfs://node1:8020value>
    property>

    
    <property>
        <name>hadoop.tmp.dirname>
        <value>/export/server/hadoop-3.3.0value>
    property>

    
    <property>
        <name>hadoop.http.staticuser.username>
        <value>rootvalue>
    property>

    
    <property>
        <name>hadoop.proxyuser.root.hostsname>
        <value>*value>
    property>

    <property>
        <name>hadoop.proxyuser.root.groupsname>
        <value>*value>
    property>

    
    <property>
        <name>fs.trash.intervalname>
        <value>1440value>
    property>

<3>、配置hdfs-site.xml文件


<property>
  <name>dfs.namenode.secondary.http-addressname>
  <value>node2:9868value>
property>

<4>、配置mapred-site.xml文件

    
    <property>
        <name>mapreduce.framework.namename>
        <value>yarnvalue>
    property>

    
    <property>
        <name>mapreduce.jobhistory.addressname>
        <value>node1:10020value>
    property>

    
    <property>
        <name>mapreduce.jobhistory.webapp.addressname>
        <value>node1:19888value>
    property>

    <property>
        <name>yarn.app.mapreduce.am.envname>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
    property>

    <property>
        <name>mapreduce.map.envname>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
    property>

    <property>
        <name>mapreduce.reduce.envname>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
    property>


<5>、配置yarn-site.xml文件


<property>
    <name>yarn.resourcemanager.hostnamename>
    <value>node1value>
property>


<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>

        
<property>
<name>yarn.nodemanager.pmem-check-enabledname>
<value>falsevalue>
property>

        
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
property>

        
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>

        
<property>
<name>yarn.log.server.urlname>
<value>http://node1:19888/jobhistory/logsvalue>
property>

        
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>

<6>、配置works文件

node1.itcast.cn
node2.itcast.cn
node3.itcast.cn

将hadoop配置远程copy到其他机器

cd /export/server
scp -r hadoop-3.3.0 root@node2:$PWD
scp -r hadoop-3.3.0 root@node3:$PWD

<7>、添加hadoop环境变量

export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

<8>、hadoop文件初始化 (首次启动,在node1服务上)

hdfs namenode -format

出现以下信息说明初始化成功
Storage directory /export/server/hadoop-3.3.0/dfs/name has been successfully formatted.

注意:无法启动在hadoop/sbin目录下,将start-dfs.sh,stop-dfs.sh文件头添加以下内容

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh文件头添加以下内容

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

查看hadoop web,是否配置成功

Linux服务ip:9870

Linux服务ip:8088

三、mysql安装配置

卸载 mariadb

rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
rpm -qa | grep mysql

mysql安装
将mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar上传到软件安装目录
解压

tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar

安装

yum install mysql-community-{libs,client,common,server}-*.rpm

出现选项,输入y
启动mysql服务

systemctl start mysqld

更改MySQL服务的数据编码

vim /etc/my.cnf

最下面一行加入

character-set-server=utf8

重新启动服务

systemctl restart mysqld

显示mysql日志

cat /var/log/mysqld.log

查看mysql临时密码

grep -i "temporary password" /var/log/mysqld.log

登录mysql,用临时密码登录

mysql -uroot -p

然后输入密码
进入数据库后,更改密码,不然无法进行操作
更改密码前,先更改mysql密码安全级别,默认长度

set global validate_password_policy=0;
set global validate_password_length=4;

然后更改mysql密码

alter user root@localhost identified by '123456';

然后测试MySQL语句能否使用

show databases;

成功后输入:exit;退出mysql
然后重新登录,输入新密码,登录成功

重新登录mysql,设置客户端访问

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

四、安装配置hive

将apache-hive-3.1.2-bin.tar.gz安装包上传服务器

将文件解压到/export/server/目录

cd /export/server
tar -zxvf apache-hive-3.1.2-bin.tar.gz

解决hive与hadoop之间guava版本差异

cd /export/server/apache-hive-3.1.2-bin/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

进入到/export/server/apache-hive-3.1.2-bin/conf/目录

cd /export/server/apache-hive-3.1.2-bin/conf/

修改hive-env.sh配置文件

mv hive-env.sh.template hive-env.sh
vim hive-env.sh

添加以下内容

export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib

配置元数据库信息

vim hive-site.xml

添加以下内容

<configuration>
    
    <property>
        <name>javax.jdo.option.ConnectionURLname>
        
        
        <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8&useSSL=falsevalue>
    property>
    
    <property>
        <name>javax.jdo.option.ConnectionDriverNamename>
        <value>com.mysql.jdbc.Drivervalue>
    property>
    
    <property>
        <name>javax.jdo.option.ConnectionUserNamename>
        <value>rootvalue>
    property>
    
    <property>
        <name>javax.jdo.option.ConnectionPasswordname>
        <value>123456value>
    property>
    <property>
        <name>hive.cli.print.current.dbname>
        <value>truevalue>
    property>
    <property>
        <name>hive.server2.thrift.portname>
        <value>10000value>
    property>
    <property>
        <name>hive.server2.thrift.bind.hostname>
        <value>192.168.200.138value>
    property>

    
    
    <property>
        <name>hive.compactor.initiator.onname>
        <value>truevalue>
    property>
    <property>
        <name>hive.compactor.worker.threadsname>
        <value>1value>
    property>


    

    <property>
        <name>hive.support.concurrencyname>
        <value>truevalue>
    property>
    <property>
        <name>hive.enforce.bucketingname>
        <value>truevalue>
    property>
    <property>
        <name>hive.exec.dynamic.partition.modename>
        <value>nonstrictvalue>
    property>
    <property>
        <name>hive.txn.managername>
        <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManagervalue>
    property>

configuration>

数据库和hive安装完成后,将mysql连接jar包上传到/export/server/apache-hive-3.1.2-bin/lib目录下

初始化元数据

bin/schematool -initSchema -dbType mysql -verbos

配置hive环境变量

export HIVE_HOME=/export/server/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin

创建hive存储目录

hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir -p /tmp
hadoop fs -chmod g+w /user/hive/warehouse
hadoop fs -chmod g+w /tmp

服务启动:

nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &

nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2 &