Hadoop-Zookeeper-Hive集群搭建

Hadoop3 :

(2条消息) hadoop 3.2.1集群高可用(HA)搭建_半斤米粉闯天下的博客-CSDN博客

(2条消息) Hadoop全面讲解(三)Hadoop+yarn高可用_束安的博客-CSDN博客

Zookeeper安装

服务器IP 主机名 myid的值
192.168.174.100 node01 1
192.168.174.110 node02 2
192.168.174.120 node03 3

第一步:下载zookeeeper的压缩包,下载网址如下

http://archive.apache.org/dist/zookeeper/

我们在这个网址下载我们使用的zk版本为3.4.9

下载完成之后,上传到我们的linux的/export/softwares路径下准备进行安装

第二步:解压

解压zookeeper的压缩包到/export/servers路径下去,然后准备进行安装

1
2
3
cd /export/software

tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/

第三步:修改配置文件

第一台机器修改配置文件

1
2
3
4
5
cd /export/servers/zookeeper-3.4.9/conf/

cp zoo_sample.cfg zoo.cfg

mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/

vim zoo.cfg

1
2
3
4
5
6
7
8
9
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
# 保留多少个快照
autopurge.snapRetainCount=3
# 日志多少小时清理一次
autopurge.purgeInterval=1
# 集群中服务器地址
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

第四步:添加myid配置

在第一台机器的

/export/servers/zookeeper-3.4.9/zkdatas /这个路径下创建一个文件,文件名为myid ,文件内容为1

echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid

第五步:安装包分发并修改myid的值

安装包分发到其他机器

第一台机器上面执行以下两个命令

scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/

scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/

第二台机器上修改myid的值为2

echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid

第三台机器上修改myid的值为3

echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid

第六步:三台机器启动zookeeper服务

三台机器启动zookeeper服务

这个命令三台机器都要执行

/export/servers/zookeeper-3.4.9/bin/zkServer.sh start

查看启动状态

/export/servers/zookeeper-3.4.9/bin/zkServer.sh status

eNode
dataNode
ResourceManager
NodeManager

Hadoop安装

第一步:上传apache hadoop包并解压

解压命令

1
2
cd /export/softwares
tar -zxvf hadoop-2.7.5.tar.gz -C ../servers/

img

第二步:修改配置文件

修改core-site.xml

第一台机器执行以下命令

1
2
cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim core-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
<configuration>

<property>
<name>fs.default.name</name>
<value>hdfs://node01:8020</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/export/servers/hadoop-2.7.5/hadoopDatas/tempDatas</value>
</property>

<!-- 缓冲区大小,实际工作中根据服务器性能动态调整 -->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>

<!-- 开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
</configuration>
修改hdfs-site.xml

第一台机器执行以下命令

1
2
cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim hdfs-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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:50090</value>
</property>

<property>
<name>dfs.namenode.http-address</name>
<value>node01:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2</value>
</property>
<!-- 定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割 -->

<property>
<name>dfs.datanode.data.dir</name>
<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2</value>
</property>

<property>
<name>dfs.namenode.edits.dir</name>
<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/nn/edits</value>
</property>

<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/snn/name</value>
</property>

<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits</value>
</property>

<property>
<name>dfs.replication</name>
<value>3</value>
</property>


<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>

</configuration>
修改hadoop-env.sh

第一台机器执行以下命令

1
2
cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim hadoop-env.sh
1
export JAVA_HOME=/export/servers/jdk1.8.0_141
修改mapred-site.xml

第一台机器执行以下命令

1
2
cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim mapred-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<configuration>

<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>


<property>
<name>mapreduce.jobhistory.address</name>
<value>node01:10020</value>
</property>

<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node01:19888</value>
</property>

</configuration>

修改yarn-site.xml

第一台机器执行以下命令

1
2
cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim yarn-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
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>20480</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>

</configuration>
修改mapred-env.sh

第一台机器执行以下命令

1
2
cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim mapred-env.sh
1
export JAVA_HOME=/export/servers/jdk1.8.0_141
修改slaves

修改slaves文件,然后将安装包发送到其他机器,重新启动集群即可

第一台机器执行以下命令

1
2
cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim slaves
1
2
3
node01
node02
node03

第一台机器执行以下命令

1
2
3
4
5
6
7
8
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/tempDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/nn/edits
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/snn/name
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits

安装包的分发

第一台机器执行以下命令

1
2
3
cd  /export/servers/
scp -r hadoop-2.7.5 node02:$PWD
scp -r hadoop-2.7.5 node03:$PWD

第三步:配置hadoop的环境变量

三台机器都要进行配置hadoop的环境变量

三台机器执行以下命令

1
vim  /etc/profile
1
2
export HADOOP_HOME=/export/servers/hadoop-2.7.5
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

1
source /etc/profile

分发Hadoop

scp -r xxx xxx

第四步:启动集群

要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个模块。
注意: 首次启动 HDFS 时,必须对其进行格式化操作。 本质上是一些清理和
准备工作,因为此时的 HDFS 在物理上还是不存在的。

hdfs namenode -format 或者 hadoop namenode –format

准备启动

第一台机器执行以下命令

1
2
3
4
5
cd  /export/servers/hadoop-2.7.5/
bin/hdfs namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver

三个端口查看界面

http://node01:50070/explorer.html#/ 查看hdfs

http://node01:8088/cluster 查看yarn集群

http://node01:19888/jobhistory 查看历史完成的任务

Hive 的安装

这里我们选用hive的版本是2.1.1
下载地址为:
http://archive.apache.org/dist/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz

下载之后,将我们的安装包上传到第三台机器的/export/softwares目录下面去

第一步:上传并解压安装包

将我们的hive的安装包上传到第三台服务器的/export/softwares路径下,然后进行解压

1
2
cd /export/softwares/
tar -zxvf apache-hive-2.1.1-bin.tar.gz -C ../servers/
第二步:安装mysql

已安装跳过

第一步:在线安装mysql相关的软件包

yum install mysql mysql-server mysql-devel

第二步:启动mysql的服务

/etc/init.d/mysqld start

第三步:通过mysql安装自带脚本进行设置

/usr/bin/mysql_secure_installation

第四步:进入mysql的客户端然后进行授权

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

flush privileges;

第三步:修改hive的配置文件

修改hive-env.sh

1
2
cd /export/servers/apache-hive-2.1.1-bin/conf
cp hive-env.sh.template hive-env.sh
1
2
HADOOP_HOME=/export/servers/hadoop-2.7.5
export HIVE_CONF_DIR=/export/servers/apache-hive-2.1.1-bin/conf

修改hive-site.xml

1
2
cd /export/servers/apache-hive-2.1.1-bin/conf
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
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node03: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>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node03</value>
</property>
</configuration>
第四步:添加mysql的连接驱动包到hive的lib目录下

hive使用mysql作为元数据存储,必然需要连接mysql数据库,所以我们添加一个mysql的连接驱动包到hive的安装目录下,然后就可以准备启动hive了

将我们准备好的mysql-connector-java-5.1.38.jar 这个jar包直接上传到
/export/servers/apache-hive-2.1.1-bin/lib 这个目录下即可

至此,hive的安装部署已经完成,接下来我们来看下hive的三种交互方式

第五步:配置hive的环境变量

node03服务器执行以下命令配置hive的环境变量

1
sudo vim /etc/profile
1
2
export HIVE_HOME=/export/servers/apache-hive-2.1.1-bin
export PATH=:$HIVE_HOME/bin:$PATH

Sqoop安装

总结

一、Hadoop环境搭建
1、伪分布式
1)解压hadoop包 tar -zxvf hadoop….2.6.0.gz -C /usr/local/src
2) cd /usr/local/src mv hadoop.2.6.0… hadoop
3) 配置环境变量:
vim /root/.bash_profile
export HADOOP_HOME=/usr/local/src/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /root/.bash_profile
4) 输入 hadoop version查看是否成功
5)开始修改hadoop相关配置文件(/usr/local/src/hadoop/etc/hadoop/)
a> hadoop-env.sh 改jdk环境变量位置
b> core-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration>
<!-- 配置hadoop中Namenode的地址,mymaster为hostname主机名 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mymaster:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!-- 该路径自己指定,一般设置为hadoop下的data/tmp,该目录会自
动创建,标识hadoop运行时产生文件的存储目录 -->
<value>/opt/temp/data/tmp</value>
</property>
</configuration>
            c>  hdfs-site.xml
            d>  mapred-site.xml(需要先复制一个出来)
            e>  yarn-site.xml
    6) 配置完毕之后,格式化namenode   
            hdfs namenode -format
   7)  启动hadoop
          a》简单粗暴型:start-all.sh     停止:stop-all.sh
          b》单独启动namenode和datanode、resourcemanager
                   start-dfs.sh
                   start-yarn.sh
          c》单一节点启动:
                    namenode   ----  hadoop-daemon.sh start namenode
                    datanode   ---      hadoop-daemon.sh start datanode
   8)启动完毕之后,使用浏览器访问虚拟机中的IP对应点 hadoop文件系统界面:
        http://192.168.xx.xxx:50070
2、分布式
          删掉刚才存储元数据的文件夹
         1) hdfs-site.xml修改副本数量,如3
         2)  slaves文件,修改datanode的节点
         3)将hadoop完全拷贝至其他机器上
         4)环境变量文件也需要拷贝,并且source一下
         5)格式化hadoop
         6)启动
 测试:在本地创建一个文本文件,随便放入一些单词,以空格分开
      a》将本地文件上传至已经启动的hdfs中   hdfs dfs -put /本地目录/本地文件.txt  /
      b》运行mapreduce示例(/usr/local/src/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar)    
      hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount /hello.txt /test1
      注意:/hello.txt是hdfs中的文件路径和名称
                /test1是mapreduce结果输出到hdfs的目录,该目录存在则直接报错,所以该目录不能存在

3、zookeeper(集群之间进行协调管理,同步,故障检测等作用)
1)解压zookeeper到/usr/local/src目录下,重命名
2)配置环境变量,并且生效
3)配置文件: zoo_sample.cfg拷贝一个
cp zoo_sample.cfg zoo.cfg
修改内容:
dataDir=/usr/local/src/zookeeper/zkdata/data (自己创建的数据存放目录)
dataLogDir=/usr/local/src/zookeeper/zkdata/log (自己创建的日志目录)
server.1=主机名1:2888:3888 (集群配置)
server.2=主机名2:2888:3888 (集群配置)
server.3=主机名3:2888:3888 (集群配置)
4)在刚才配置的dataDir目录下新建一个 名为myid的文件,vim myid
在里面写上数字编号:1
5)将zookeeper远程拷贝至其他机器上。
6)修改拷贝后其他机器上zookeeper中myid的编号
7)将环境变量也同步拷贝到其他机器上,并且在其他机器上source一下
8)分别在集群机器上启动zookeeper:
启动: zkServer.sh start
查看状态: zkServer.sh status
停止: zkServer.sh stop

4、高可用