大数据Hadoop之——部署hadoop+hive+Mysql环境(Linux)

十念  论坛元老 | 2024-6-22 13:07:17 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1025|帖子 1025|积分 3075

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录
 前期准备
一、JDK的安装
1、安装jdk
2、配置Java环境变量 
 3、加载环境变量
4、进行校验
二、hadoop的集群搭建
1、hadoop的下载安装 
2、配置文件设置
2.1. 配置 hadoop-env.sh
2.2. 配置 core-site.xml
2.3. 配置hdfs-site.xml
2.4. 配置 yarn-site.xml
2.5. 配置 mapred-site.xml
2.6. 配置 workers(伪分布式不配置)
 2.7 配置sbin下启停下令
3、复制hadoop到其他节点(伪分布式不实行此步)
4、Hdfs格式化 
5、启动hdfs分布式文件体系
三、msyql安装
1、卸载旧MySQL文件
2、Mysql下载安装
3、配置环境变量 
4、删除用户组
5、创建用户和组
6、创建文件夹
7、更改权限
8、初始化
9、记着初始暗码
10 将mysql参加到服务中
11、配置文件
12、设置开机启动并查看历程
13、 创建软连接
14、授权修改暗码

四、HIve安装 
1、下载安装
2、配置环境变量
3、配置文件
4、拷贝jar包
5、初始化
6、启动hive


 前期准备

设置虚拟机
vi /etc/syscnfig/network-scripts/ifcfg-eth1

设置主机名
   hostnamectl --static set-hostname  主机名
  配置IP与主机名映射
vi /etc/hosts


关闭防火墙
   systemctl stop firewalld
  systemctl disable firewalld
  一、JDK的安装

1、安装jdk

   
sudo  yum search  openjdk

  
yum install java-1.8.0-openjdk.x86_64

  
yum install java-1.8.0-openjdk-devel.x86_64

  2、配置Java环境变量 

  vi ~/.bash_profile (或 /etc/profile 或 ~/.profile  或 ~/.bashrc 或 /etc/bashrc 或 /etc/bash.bashrc[在ubuntu 中的位置])  
   
vi  ~/.bash_profile

  
export JAVA_HOME=/usr/local/jdk1.8.0_11

  
export CLASSPATH=.JAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jar

  
export PATH=$PATHJAVA_HOME/bin

  

   3、加载环境变量

   source  ~/.bash_profile
  验证环境变量是否见效:
  
env | grep HOME

  
env | grep PATH

  4、进行校验


二、hadoop的集群搭建

1、hadoop的下载安装 

   1.1. 下载
  https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/
​下载 hadoop-3.3.4.tar.gz  安装包
  1.2 上传
使用xshell上传到指定安装路径
  此处是安装路径是 /usr/local
  

  1.3 解压重命名
  tar -xzvf hadoop-3.3.4.tar.gz
  mv hadoop-3.3.4 hadoop
  

  

  1.4 配置环境变量
  
vi  ~/.bash_profile

  
export JAVA_HOME=/usr/local/jdk1.8.0_11

  
export CLASSPATH=.JAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jar

  
export HADOOP_HOME=/usr/local/hadoop

  
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/binHADOOP_HOME/sbin

  

  
1.5 加载环境变量

  

  source  ~/.bash_profile
  验证环境变量是否见效:
  
env | grep HOME

  
env | grep PATH

  

  
1.6检验安装

  
hadoop version

  
出现下图分析安装乐成

  

  2、配置文件设置

2.1. 配置 hadoop-env.sh

   hadoop伪分布式配置
  export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/usr/local/jdk1.8.0_11
  
  hadoop集群配置(root指的是用户名)
  export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/usr/local/jdk1.8.0_11
  export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
  2.2. 配置 core-site.xml

   <configuration>
    <!-- 指定HDFS中NameNode的地址 默认 9000端口-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop001:9000</value>
        <description>配置NameNode的URL</description>
    </property>
      <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/data</value>
    </property>
  
      分布式集群配置下面内容,伪分布式只需配置上面内容
    <!--配置所有节点的root用户都可作为署理用户-->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
      <!--配置root用户可以或许署理的用户组为任意组-->
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
      <!--配置root用户可以或许署理的用户为任意用户-->
    <property>
        <name>hadoop.proxyuser.root.users</name>
        <value>*</value>
    </property>
</configuration>
  2.3. 配置hdfs-site.xml

   以下配置集群和伪分布式均可用
  <configuration>
<!-- 数据的副本数量 --> 
    <property> 
        <name>dfs.replication</name> 
        <value>3</value>  <!-- 伪分布式此时为1-> 
    </property> 
    <!-- nn web端访问地址 默认也是9870--> 
    <property> 
        <name>dfs.namenode.http-address</name> 
        <value>hadoop001:9870</value> 
    </property> 
      <!--设置权限为false-->
    <property>
        <name>dfs.permissions.enabled </name>
        <value>false</value>
    </property>
     <!--设置元数据存储目录-->
   <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:///usr/local/hadoopdata/dfs/name</value>
   </property>
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///usr/local/hadoopdata/dfs/data</value>
  </property>
  
   集群配置使用
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop003:9868</value>
  </property>  
  
    <!-- 2nn web端访问地址 可以不配置--> 
    <property> 
        <name>dfs.namenode.secondary.http-address</name> 
        <value>hadoop002:9868</value> 
    </property>
  </configuration>
  2.4. 配置 yarn-site.xml

   <configuration>
      <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MR步伐。--> 
    <property>    
        <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value> 
    </property>
  
   伪分布式以下无需配置
  <!-- Site specific YARN configuration properties -->
<!-- yarn集群主角色RM运行机器。--> 
    <property>    
        <name>yarn.resourcemanager.hostname</name>    
        <value>hadoop002</value>
    </property> 
 <!-- 每个容器哀求的最小内存资源(以MB为单位)。-->
    <property>     
        <name>yarn.scheduler.minimum-allocation-mb</name> 
        <value>512</value> 
    </property> 
 <!-- 每个容器哀求的最大内存资源(以MB为单位)。--> 
    <property>     
        <name>yarn.scheduler.maximum-allocation-mb</name> 
        <value>2048</value>
    </property>
    <!-- 容器虚拟内存与物理内存之间的比率。--> 
    <property>    
        <name>yarn.nodemanager.vmem-pmem-ratio</name>  
        <value>4</value> 
    </property>
    
    <!-- 关闭yarn内存检查 flink on hadoop 配置-->
    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
      <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>
  2.5. 配置 mapred-site.xml

   <configuration>
    <!-- mr步伐默认运行方式。yarn集群模式 local当地模式-->
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
     以下配置为集群配置使用
    <!-- MR App Master环境变量。-->
    <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <!-- MR MapTask环境变量。-->
    <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <!-- MR ReduceTask环境变量。-->
    <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
  
    <!-- 汗青服务器端地址伪分布式和集群分布式都可以不配置 --> 
    <property> 
        <name>mapreduce.jobhistory.address</name> 
        <value>hadoop003:10020</value> 
    </property> 
    <!-- 汗青服务器web端地址 --> 
    <property> 
        <name>mapreduce.jobhistory.webapp.address</name> 
        <value>hadoop003:19888</value> 
    </property> 
</configuration>
  2.6. 配置 workers(伪分布式不配置)

   配置三台主机名,在集群中使用。如果不是集群可以不消配置
  hadoop001
hadoop002
hadoop003
   2.7 配置sbin下启停下令

   在 sbin下的start-dfs.sh和stop-dfs.sh中顶部配置
  #!/usr/bin/env bash
HDFS_DATANODE_USER=root 
HADOOP_SECURE_DN_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root
    在 sbin下的start-yarn.sh和stop-yarn.sh中顶部配置
  #!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root 
HADOOP_SECURE_DN_USER=yarn 
YARN_NODEMANAGER_USER=root
  3、复制hadoop到其他节点(伪分布式不实行此步)

   scp /usr/local/hadoop root@hadoop002:/usr/local/
  4、Hdfs格式化 

   cd /usr/local/hadoop/
  bin/hdfs  namenode  -format
  find /usr/local/data/hadoop/
  5、启动hdfs分布式文件体系

   cd /usr/local/hadoop
  ./sbin/start-dfs.sh
  使用 jps 查看启动历程
  

  
  访问hadoop分布式文件体系
  
  

  6、启动yarn
   cd /usr/local/hadoop
  ./sbin/start-yarn.sh
  使用 jps 查看启动历程
  
  

  
  访问hadoop分布式yarn页面
  
  

  三、msyql安装

1、卸载旧MySQL文件

   实行下令 
    # yum remove mysql mysql-server mysql-lib mysql-server
•再查看当前安装mysql的环境看卸载环境:
    # rpm -qa|grep -i mysql
可以看到之前安装的包,然后实行删除下令,全部删除
    # rpm -ev MySQL-devel--5.1.52-1.el6.i686 --nodeps
•查找之前老版本MySQL的目录,并删除老版本的MySQL的文件和库
    # find / -name mysql
删除查找到的所有目录
#例如:rm -rf /run/lock/subsys/mysql    
#例如: rm -rf /etc/selinux/targeted/active/modules/100/mysql    # rm -rf /var/lib/mysql
•手动删除/etc/my.cnf
    # rm -rf /etc/my.cnf
•再次查询如果无,则删除干净
    # rpm -qa|grep -i mysql
  
  删除 mariadb
 rpm -qa|grep mariadb 
 rpm -e --nodeps mariadb-libs
 rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64
  
2、Mysql下载安装

   1.1 下载
  官网网址:MySQL :: Download MySQL Community Server
  在这里下载的是如下版本的mysql
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
  
  1.2 上传
  使用xshell上传到到linux服务器指定安装路径
  此处是安装路径是 /usr/local
  
  1.3 解压重命名
  cd  /usr/local/
  tar -xzvf  mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C
  # 如果是xz结尾压缩包用  tar -xvJf,如  tar -xvJf  mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
  重下令
  mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
  3、配置环境变量 

   vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATHMYSQL_HOME/bin
  
  使环境见效
source /etc/profile
  4、删除用户组

   
删除用户组
cat /etc/group|grep mysql
groupdel mysql
userdel mysql

  5、创建用户和组

   
groupadd mysql
useradd -r -g mysql mysql

  6、创建文件夹

   
mkdir /usr/local/mysql/data

  7、更改权限

   
更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及赋予可实行权限

  
chown -R mysql:mysql /usr/local/mysql/data/

  
chmod -R 755 /usr/local/mysql/data/
chown -R mysql:mysql /usr/local/mysql/
chmod -R 755 /usr/local/mysql/

  8、初始化

   
安装依靠包

  yum install libaio 或者下面的
  yum install -y mariadb-server 安装mariadb-server 5.X版本使用
  实行初始化
  
 /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize

  

  
#分析

  
–initialize 初始化(真正开始干活)
–user=mysql 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者
–basedir=xxx mysql其安装目录,非常重要
–lower_case_table_names=1 不区分大小写,如果初始化不指定,必须重装才能解决,非常重要

  9、记着初始暗码


10 将mysql参加到服务中

   复制
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
  #留意:默认环境下,GBLIC版本的数据库要求安装到/usr/local/mysql目录,其mysql.server脚本中对应的目录也是/usr/local/mysql,这会导致mysql无法启动。以是可以更改其basedir以及datadir两个变量,我们反面在 my.cnf中配置。
  
  #赋予可实行权限
chmod +x /etc/init.d/mysql
 #添加服务    
chkconfig --add mysql
 #显示服务列表   
chkconfig --list mysql
  

  11、配置文件

   
5.x版本

  

  
vi /etc/my.cnf

  

  
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#character config
character_set_server=utf8mb4
explicit_defaults_for_timestamp=true 

    8.0版
  留意:使用配置前肯定要创建好目录
  mkdir /usr/local/mysql/tmp
  mkdir /usr/local/mysql/log
  touch /usr/local/mysql/log/mysqld_safe.err
  chown -R mysql:mysql /usr/local/mysql/tmp
  chown -R mysql:mysql /usr/local/mysql/log
  chown -R mysql:mysql /usr/local/mysql/log/mysqld_safe.err
  
  简单配置(推荐)
  vi /etc/my.cnf
  [mysql]
user=mysql
default-character-set=utf8
  [mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/tmp/mysql.sock
user=mysql
log_timestamps=SYSTEM
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin= mysql_native_password
  [mysqld_safe]
log-error=/usr/local/mysql/log/mysqld_safe.err
pid-file=/usr/local/mysql/tmp/mysqld.pid
  
  
  复杂配置
  vi /etc/my.cnf
  [mysql]
socket=/usr/local/mysql/tmp/mysql.sock
port=3306
user=mysql
default-character-set=utf8
  [mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/tmp/mysql.sock
port=3306
user=mysql
log_timestamps=SYSTEM
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin= mysql_native_password
  
  [mysqld_safe]
log-error=/usr/local/mysql/log/mysqld_safe.err
pid-file=/usr/local/mysql/tmp/mysqld.pid
socket=/usr/local/mysql/tmp/mysql.sock
  [mysql.server]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/tmp/mysql.sock
port=3306
user=mysql
  12、设置开机启动并查看历程

   设置开机启动:chkconfig mysql on
  
  启动mysql :service mysql start;
  启动报错:
  Starting MySQL.2023-06-25T04:58:08.333370Z mysqld_safe error: log-error set to ‘/usr/local/mysql/log/mysqld_safe.err’, however file don’t exists. Create writable for user ‘mysql’.
ERROR! The server quit without updating PID file (/usr/local/mysql/pid/mysqld.pid).

  解决方案
[root@mysql]# touch /usr/local/mysql/log/mysqld_safe.err
[root@mysql]# chown -R mysql:mysql /usr/local/mysql/log/mysqld_safe.err
  启动报错:
my_print_defaults: [Warning] World-writable config file ‘/usr/local/mysql/my.cnf’ is ignored.
Starting MySQL.my_print_defaults: [Warning] World-writable config file ‘/usr/local/mysql/my.cnf’ is ignored.
my_print_defaults: [Warning] World-writable config file ‘/usr/local/mysql/my.cnf’ is ignored.
ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).

  解决方案
  /usr/local/mysql/my.cnf’ 权限给的是 777,需要改成644,再次重新启动即可。
  
  查看历程:ps -ef|grep mysql;
  查看状态:service mysql status; 
  13、 创建软连接

   ln -s /usr/local/mysql/bin/mysql /usr/bin
  14、授权修改暗码

   mysql -uroot -p
      输入暗码(初始化时候的暗码)
  输入暗码报错:
  Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  解决方案
  创建软连接或者 修改配置文件my.cnf 中 socket = /usr/local/mysql/tmp/mysql.sock
  
  修改暗码
  8.0以下修改暗码:
  use mysql;
  SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');
  flush privileges;
  
  8.0以上修改暗码
  use mysql;
  alter user "root"@"localhost" identified by "root";
UPDATE user SET authentication_string="" WHERE user="root";
FLUSH PRIVILEGES; 
update user set Host="%" where User="root";
flush privileges;
alter user "root"@"%" identified by "root";
flush privileges;
  分析:
  

  • UPDATE user SET authentication_string="" WHERE user="root"; 更新user表,将用户名为root的用户的authentication_string字段设置为空字符串。现实上是在清空root用户的暗码。
  • update user set Host="%" where User="root"; 更新user表,它将用户名为root的用户的Host字段设置为%。即root用户可以从任何主机进行连接。默认环境下,root用户大概只能从localhost进行连接。
  • alter user "root"@"%" identified by "root"; 更改用户的认证信息。它指定了用户名为root且来源主机为任意主机(%)的用户,并将其暗码设置为root。这是在新版本的MySQL中设置或更改用户暗码的推荐方式。
  授权
  8.0以下授权
grant all privileges on *.* to 'root'@'%' identified by '暗码123456' with grant option;
flush privileges;
  分析:
  

  • all privileges:表现将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
  • on:表现这些权限对哪些数据库和表见效,格式:数据库名.表名,这里写“*”表现所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
  • to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表现没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表现yangxin这个用户只能在192.168.0IP段登录
  • identified by:指定用户的登录暗码
  
  8.0以上授权
  use mysql;
  ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
  flush privileges;
  分析:
  

  • ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';   #还原暗码验证插件,将MySQL8的暗码认证插件由caching_sha2_password更换成mysql_native_password
  
  

四、HIve安装 

1、下载安装

   1.1下载
  下载地址:http://archive.apache.org/dist/hive/
  我们选择apache-hive-3.1.3-bin.tar.gz版本学习
  1.2 上传
  1.3 解压重命名
  2、配置环境变量

   vi ~/.bash_profile 
export HIVE_HOME=/usr/local/hive
  export PATH=$PATHHIVE_HOME/bin
  
  刷新配置
source ~/.bash_profile
  3、配置文件

配置hive-env.sh
   export HADOOP_HOME=/usr/local/hadoop
  
export HIVE_CONF_DIR=/usr/local/hive/conf
  配置hive-site.xml
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  <configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>   
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>   
  </property>
</configuration>
  4、拷贝jar包

   4.1 拷贝mysql驱动
        需要提前现在对应的驱动包,并解压
        cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar /usr/local/hive/lib/ 
  
  4.2 拷贝guava包
        #hadoop和hive里面的guava包版本大概不一致,那么用hadoop里面的覆盖掉hive里面的
      cp /usr/local/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/hive/lib/
        #删除hive的旧依靠包
      rm /opt/hive/lib/guava-19.0.jar 
  5、初始化

   5.1 启动msyql
       # 先查看mysql是否启动
        service mysql status;
        #未启动则进行启动
        service mysql start
  5.2 启动hadoop
        #进入hadoop安装目录
        cd /usr/local/hadoop/
        #启动hadoop
        sbin/start-all.sh
  5.3 初始化hive
        #进入hive安装目录
        cd /usr/local/hive
        #实行初始化下令,#初始化Hive
      bin/schematool -dbType mysql -initSchema
  6、启动hive

   #进入hive安装目录
  cd /usr/local/hive
  #使用下令验证hive是否安装乐成
  bin/hive
  #进入hive shell,使用show databases; 查看数据,分析安装乐成!
  

  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表