Pekey‘s Blog

Hive环境搭建

2018/04/18 Share

Mysql安装

关闭selinux 服务

vim /etc/selinux/config
···
SELINUX=disabled
···

卸载MariaDB

查看当前安装的mariadb包: rpm -qa | grep mariadb
强制卸载: rpm -e –nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

查看是否已经安装了MySQL

rpm -qa | grep -i mysql
find / -name mysql

删除分散mysql文件

find / -name mysql / # whereis mysql

删除配置文档

rm -rf /etc/my.cnf

再次查找机器是否安装mysql

rpm -qa|grep -i mysql

下载mysql5.6的安装包,并上传到服务器上

[root@nodeh1 mysql]# ll
total 236180
-rw-r–r– 1 root root 20278972 Sep 22 15:41 MySQL-client-5.6.31-1.el7.x86_64.rpm
-rw-r–r– 1 root root 3529244 Sep 22 15:40 MySQL-devel-5.6.31-1.el7.x86_64.rpm
-rw-r–r– 1 root root 61732192 Sep 22 15:42 MySQL-server-5.6.31-1.el7.x86_64.rpm
-rw-r–r– 1 root root 2101912 Sep 22 15:42 MySQL-shared-5.6.31-1.el7.x86_64.rpm
-rw-r–r– 1 root root 2299648 Sep 22 15:40 MySQL-shared-compat-5.6.31-1.el7.x86_64.rpm
-rw-r–r– 1 root root 59644132 Sep 22 15:40 MySQL-test-5.6.31-1.el7.x86_64.rpm

安装mysql 的安装包 注意顺序

rpm -ivh MySQL-common-5.6.31-1.el7.x86_64.rpm
rpm -ivh MySQL-libs-5.6.31-1.el7.x86_64.rpm
rpm -ivh MySQL-client-5.6.31-1.el7.x86_64.rpm
rpm -ivh MySQL-server-5.6.31-1.el7.x86_64.rpm
rpm -ivh MySQL-devel-5.6.31-1.el7.x86_64.rpm

使用rpm安装方式安装mysql,安装的路径如下:

a 数据库目录
/var/lib/mysql/
b 配置文件
/usr/share/mysql(mysql.server命令及配置文件)
c 相关命令
/usr/bin(mysqladmin mysqldump等命令)
d 启动脚本
/etc/rc.d/init.d/(启动脚本文件mysql的目录)
e /etc/my.conf

修改字符集和数据存储路径 配置/etc/my.cnf文件,设置如下键值来启用一起有用的选项和 UTF-8 字符集.

cat /etc/my.cnf
[mysqld]
···
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

如果无法启动mysql服务

chown mysql:mysql -R /var/lib/mysql

如果遇到Access denied for user ‘root‘@’localhost’ (using password: YES)

  1. 打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件,重启服务。
  2. 通过cmd行进入MySQL的bin目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库;
  3. 执行mysql> use mysql;,使用mysql数据库;
  4. mysql> update mysql.user set authentication_string=password("root") where user="root" and Host = "localhost";
  5. 打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件
  6. mysql> flush privileges;
  7. mysql> quit;

初始化MySQL及设置密码

mysqld –initialize
会生成一个 root 账户密码,密码在log文件里
cat /var/log/mysqld.log
2017-04-13T10:00:37.229524Z 1 [Note] A temporary password is generated for root@localhost: %kWTz,Ml?3Zs

systemctl start mysqld.service

ALTER USER ‘root‘@’localhost’ IDENTIFIED BY ‘new_password’;

设置mysql开机启动

systemctl restart mysqld.service
systemctl enable mysqld.service

设置mysql允许远程登陆

1
2
3
4
5
6
7
8
9
mysql> use mysql;
mysql> select host,user,password from user;
| host | user | password |
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost.localdomain | root | *1237E2CE819C427B0D8174456DD83C47480D37E8 |
| 127.0.0.1 | root | *1237E2CE819C427B0D8174456DD83C47480D37E8 |
| ::1 | root | *1237E2CE819C427B0D8174456DD83C47480D37E8 |
mysql> update user set host='%' where user='root' and host='localhost';
mysql> flush privileges;

MySQL is running but PID file could not be found

在Linux 中,当你启动或者重启 MySQL 时,报关于 PID file 的错误

第一步:找到 mysql 中 data 目录下的 mysql-bin.index 文件,然后删除

1
2
find / -name mysql-bin.index
rm -rf /phpstudy/data/mysql-bin.index

第二步:找到 并 kill 所有关于 mysql 或者 mysqld 的进程

1
2
ps -aux | grep mysql
kill 进程号

可以在查看下进程中是否有 mysql 进程,确保 kill 干净,再看看 还有没有 mysql-bin.index文件(进程没杀死之前可能会生成)<有必要>

命令: service mysqld status


mysqld:未被识别的服务

遇到这样的错误,是由于 /etc/init.d/ 不存在 mysqld 这个命令(有的人安装完环境后存在,是因为你的安装包中有这样的命令将 mysql.server 文件 copy 到 /etc/init.d/ 下面了)

1.首先你需要找到 mysql.server 文件,这个 和 mysqld 文件是一模一样的,只不过文件名不相同,执行命令:

1
find  /  -name mysql.server

2.copy mysql.server 文件到 /etc/init.d/ 目录下,重命名文件为 mysqld,执行命令:

1
cp  /phpstudy/mysql/support-files/mysql.server  /etc/init.d/mysqld

然后 再 service mysqld status 这个问题就解决了。


mysqld启动错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Redirecting to /bin/systemctl start  mysqld.service
Job for mysqld.service failed. See 'systemctl status mysqld.service' and 'journalctl -xn' for details.
service mysqld status
Redirecting to /bin/systemctl status mysqld.service
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)
Active: failed (Result: start-limit) since Tue 2015-12-08 13:57:22 CST; 17s ago
Process: 31004 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 30988 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)

Dec 08 13:57:22 iZ25lox0jlhZ systemd[1]: Failed to start MySQL Server.
Dec 08 13:57:22 iZ25lox0jlhZ systemd[1]: Unit mysqld.service entered failed state.
Dec 08 13:57:22 iZ25lox0jlhZ systemd[1]: mysqld.service holdoff time over, scheduling restart.
Dec 08 13:57:22 iZ25lox0jlhZ systemd[1]: Stopping MySQL Server...
Dec 08 13:57:22 iZ25lox0jlhZ systemd[1]: Starting MySQL Server...
Dec 08 13:57:22 iZ25lox0jlhZ systemd[1]: mysqld.service start request repeated too quickly, refusing to start.
Dec 08 13:57:22 iZ25lox0jlhZ systemd[1]: Failed to start MySQL Server.
Dec 08 13:57:22 iZ25lox0jlhZ systemd[1]: Unit mysqld.service entered failed state.

安装完应该先检查一下/var/lib/mysql目录下的文件权限,执行

chown mysql:mysql -R /var/lib/mysql

然后重新启动mysql服务

service mysqld start

Hive配置过程

  • hive-site.xml

    cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?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://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>new_password</value>
    </property>
    <property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
    </property>
    </configuration>

iotmp

建立临时目录
mkdir /home/grid/hive/iotmp
关联找到hive-site.xml里面,将iotmp的对应配置修改成真实地址。
${system:java.io.tmpdir} 改为真实物理路径。

Hive启动过程

nohup hive –service metastore -v &

CATALOG
  1. 1. Mysql安装
    1. 1.1. MySQL is running but PID file could not be found
    2. 1.2. mysqld:未被识别的服务
    3. 1.3. mysqld启动错误
  2. 2. Hive配置过程
    1. 2.1. iotmp
  3. 3. Hive启动过程