Just Do IT !

大数据环境准备-搭建数据仓库

字数统计: 2.2k阅读时长: 10 min
2019/10/14 Share

环境准备

1.首先修改hosts文件,以自己实验ip为准。(master中进行)

vim /etc/hosts

然后直接将hosts文件复制到从节点中

scp /etc/hosts root@slave1:/etc/hosts
scp /etc/hosts root@slave2:/etc/hosts

2.开启zookeeper(三台机器)

进入zookeeper安装目录,直接开启zookeeper。

/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh start
/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh status

3.开启hadoop(master进行)
/usr/hadoop/hadoop-2.7.3/sbin/start-all.sh

hadoop集群开启之后,就可以在此基础上安装hive了

注意:

  实验中我们选用hive的远程模式,slave2安装mysql-server用于存放元数据,slave1作为hive server作为thrift 服务器,master作为client客户端进行操作。
  
Slave2上安装mysql-server

1.环境中,我们已经配置过本地源了。所以这里不用下载yum源,我们直接安装mysql server即可。

安装MySQL:yum -y install mysql-community-server

2.启动服务

重载所有修改过的配置文件:systemctl daemon-reload
开启服务:systemctl start mysqld
开机自启:systemctl enable mysqld

3.安装完毕后,MySQL会在/var/log/mysqld.log这个文件中会自动生成一个随机的密码,获取得这个随机密码,以用于登录MySQL数据库:

获取初密码:grep "temporary password" /var/log/mysqld.log
登陆MySQL:mysql -uroot -p(注意中英文)

4.MySQL密码安全策略设置:

设置密码强度为低级:set global validate_password_policy=0;
设置密码长度:set global validate_password_length=4;
修改本地密码:alter user 'root'@'localhost' identified by '123456';
退出:\q

密码强度分级如下:

0为low级别,只检查长度;
1为medium级别(默认),符合长度为8,且必须含有数字,大小写,特殊字符;
2为strong级别,密码难度更大一些,需要包括字典文件。

密码长度最低长为4,当设置长度为1、2、3时,其长度依然为4。

  1. 设置远程登录

以新密码登陆MySQL:mysql -uroot -p123456
创建root用户:create user 'root'@'%' identified by '123456';
添加远程登录用户:grant all privileges on *.* to 'root'@'%' with grant option;
刷新权限:flush privileges;

master、slave1上创建工作路径,解压hive

1.首先我们需要创建工作路径,并将hive解压。环境中master作为客户端,slave1作为服务器端,因此都需要使用到hive。因为hive相关安装包存放在master中,因此我们先在master中对hive进行解压,然后将其复制到slave1中。

master中操作如下:

1
2
3
4
cd /opt/soft
ls
mkdir -p /usr/hive
tar -zxvf /opt/soft/apache-hive-2.1.1-bin.tar.gz -C /usr/hive/

2.同样slave1上建立文件夹/usr/hive,master中将安装包远程复制到

slave1

scp -r /usr/hive/apache-hive-2.1.1-bin root@slave1:/usr/hive/

3.修改/etc/profile文件设置hive环境变量。(master和slave1都执行)

1
2
3
4
vim /etc/profile
#set hive
export HIVE_HOME=/usr/hive/apache‐hive‐2.1.1‐bin
export PATH=$PATH:$HIVE_HOME/bin

生效环境变量:
source /etc/profile

slave1作为hive server,进行配置

1.因为服务器端需要和Mysql通信,所以服务器端需要Mysql的lib安装包到Hive_Home/conf目录下。

注意:mysql.jar放在slave2中的/lib目录下,需要将其远程复制到slave1的hive的lib中。

首先slave2中进行如下操作:

查看lib:ls /lib

远程复制依赖包到slave1:scp /lib/mysql-connector-java-5.1.5-bin.jar root@slave1:/usr/hive/apache-hive-2.1.1-bin/lib

2.回到slave1,修改hive-env.sh文件中HADOOP_HOME环境变量。进入hive配置目录,因为hive中已经给出配置文件的范本hive-env.sh.template,直接将其复制一个进行修改即可:

cd $HIVE_HOME/conf
ls
cp hive-env.sh.template hive-env.sh
vim hive-env.sh

hive-env.sh文件中修改HADOOP_HOME环境变量,内容如下:

HADOOP_HOME=/usr/hadoop/hadoop-2.7.3

3.修改hive-site.xml文件
  
vim 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
25
26
27
28
29
30
31
32
33
34
35
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!-- 数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!-- 数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- MySQL数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- MySQL数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
</configuration>

master作为客户端,进行配置

1.解决版本冲突和jar包依赖问题。

由于客户端需要和Hadoop通信,所以需要更改Hadoop中jline的版本。即保留一个高版本的jline jar包,从hive的lib包中拷贝到Hadoop中lib位置为/usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib
cp /usr/hive/apache-hive-2.1.1-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/

2.修改hive-env.sh中HADOOP_HOME环境变量:

HADOOP_HOME=/usr/hadoop/hadoop‐2.7.3

3.修改hive-site.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>

<!--- 使用本地服务连接Hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>

<!-- 连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
</configuration>

启动hive

1.slave1作为服务器端,开启hive server。

bin/hive --service metastore

2.master作为客户端,启动hive。

bin/hive

测试hive是否启动成功:

hive>show databases;

3.最后复制一个master,查看其进程如下:

jps

Hbase环境搭建

注意开启hbase之前,需要将之前的hadoop集群开启

start-all.sh (启动hadoop)

zkServer.sh start(各个节点均执行)

创建路径:mkdir -p /usr/hbase

解压缩:tar -zxvf /opt/soft/hbase-1.2.4-bin.tar.gz

添加环境变量:

在/etc/profile中添加

在三个节点中都要添加

export  HBASE_HOME=/usr/hbase/hbase-1.2.4
export  PATH=$HBASE_HOME/bin:$PATH

source /etc/profile

修改配置文件:conf/hbase-env.sh

export HBASE_MANAGES_ZK=false
xport JAVA_HOME=/usr/java/jdk1.8.0_171

解释:

一个分布式运行的Hbase依赖一个zookeeper集群。所有的节点和客户端都必须能够访问zookeeper。默认的情况下Hbase会管理一个zookeep集群,即Hbase默认自带一个zookeep集群。这个集群会随着Hbase的启动而启动。而在实际的商业项目中通常自己管理一个zookeeper集群更便于优化配置提高集群工作效率,但需要配置Hbase。需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK 来切换。这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper.在本实验中,我们采用独立运行zookeeper集群的方式,故将其属性值改为false。

3.配置conf/hbase-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<configuration>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.master</name>
    <value>hdfs://master:6000</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master,slave1,slave2</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/zookeeper/zookeeper-3.4.10/</value>
  </property>
</configuration>

解释:要想运行完全分布式模式,加一个属性 hbase.cluster.distributed 设置为 true 然后把 hbase.rootdir 设置为HDFS的NameNode的位置

  hbase.rootdir:这个目录是region server的共享目录,用来持久化Hbase。URL需要是’完全正确’的,还要包含文件系统的scheme
  
  hbase.cluster.distributed :Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。在hbase-site.xml配置zookeeper:当Hbase管理zookeeper的时候,你可以通过修改zoo.cfg来配置zookeeper,对于zookeepr的配置,你至少要在 hbase-site.xml中列出zookeepr的ensemble servers,具体的字段是 hbase.zookeeper.quorum.在这里列出Zookeeper集群的地址列表,用逗号分割。
  
  hbase.zookeeper.property.clientPort:ZooKeeper的zoo.conf中的配置,客户端连接的端口。
  
  hbase.zookeeper.property.dataDir:ZooKeeper的zoo.conf中的配置。对于独立的Zookeeper,要指明Zookeeper的host和端口。需要在 hbase-site.xml中设置。
  
  

配置conf/regionservers

master
slave1
slave2

在这里列出了希望运行的全部 HRegionServer,一行写一个host (就Hadoop里面的 slaver 一样)。列在这里的server会随着集群的启动而启动,集群的停止而停止

分发hbase

运行hbase : start-hbase.sh

CATALOG
  1. 1. 环境准备
    1. 1.1. 启动hive
    2. 1.2. Hbase环境搭建