大数据Hadoop2.7+zookeeper+Hbase+Hiv

2019-10-04  本文已影响0人  SUSUR_28f6

最近在新电脑上配置大数据开发环境,踩了不少坑,更具网上的一些方法整理了一套比较简单的hadoop+zookeeper+hbase+hive环境的搭建(由于虚拟机环境均以root用户操作);

所需环境和工具

HostName及HOST配置

由于分布式环境需要连接各个节点的linux系统,为了方便我们需要配置了HostName主机名和hosts文件;

1. 设置hostname

hostnamectl set-hostname susur1 #susur1为1号节点名

2. 查看hostname

[root@susur1 ~]# hostname
susur1

显示出你配置的hostname就算成功了;

3. 配置hosts文件(地址/etc/hosts)

vim /etc/hosts

将这个追加的hosts文件最下面(格式为:节点ip + 节点hostname);

192.168.160.129 susur1
192.168.160.130 susur2
192.168.160.131 susur3

你也可以将这段hosts代码加到主机的hosts文件,这样就可以方便的通过hostname访问虚拟机上的linux系统;

======MacOS的地址和Linux的一样====,Windows的地址为C:\Windows\System32\drivers\etc;==

配置成功以后测试一些可不可以ping通;

hekaideMacBook-Pro:~ hekai$ ping susur1
PING susur1 (192.168.160.129): 56 data bytes
64 bytes from 192.168.160.129: icmp_seq=0 ttl=64 time=0.260 ms
64 bytes from 192.168.160.129: icmp_seq=1 ttl=64 time=0.222 ms
64 bytes from 192.168.160.129: icmp_seq=2 ttl=64 time=0.182 ms

配置ssh免密钥登陆

为了保证分布式环境下各个节点直接可以无障碍相互访问,我们需要配置ssh密钥保证各个节点可以相互免密钥登陆;

1. 查看ssh是否启动

systemctl status sshd.service

如果报命令不存在的话需要安装ssh

2. yum安装ssh(ubuntu是apt)

yum install -y openssl openssh-server

3. 修改配置文件

ssh连接时如果报权限错误,我们需要修改sshd配置文件,打开权限;

# 输入指令
vim /etc/ssh/sshd_config
# 将 PermitRootLogin, RSAAuthentication, PubkeyAuthentication 设置为 yes

4.启动ssh服务

#开启ssh服务
systemctl start sshd.service
#设置开机运行
systemctl enable sshd.service
#重启ssh服务
systemctl restart sshd.service

5.生成ssh公钥私钥

####一路回车即可
[root@susur1 ~]]#  ssh-keygen -t rsa

6.设置.ssh文件访问权限

#在root目录下
cd ~
chmod 700 .ssh
chmod 600 .ssh/*
ls -la .ssh

7.拷贝公钥

在生成完公钥和私钥之后.ssh文件目录下为:

-rw-------. 1 root root 1679 Sep 24 20:15 id_rsa
-rw-r--r--. 1 root root  393 Sep 24 20:15 id_rsa.pub
-rw-r--r--. 1 root root  552 Sep 25 11:33 known_hosts

我们将id_rsa.pub复制为authorized_keys

cp id_rsa.pub authorized_keys

#这里解释一下:在别的教程中的方式是将公钥文件复制到别的节点下的.ssh文件中的,这样确实是规范的;
#ssh免密钥登陆的原理是通过私钥验证对应的公钥完成免密钥登陆;
#由于我们最后再直接克隆系统所有信息都是一样,所以只需要在一台机器上配置即可,无需传输公钥文件;

8.验证ssh免密钥(克隆系统以后验证)

ssh susur2 #hostname

ZooKeeper安装及配置

<html>
https://www.apache.org/dyn/closer.cgi/zookeeper/
</html>

将下载的tar包上传到Linux系统
mkdir /usr/local/zookeeper #新建zookeeper目录

tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local/zookeeper/ #解压到zookeeper目录
cd /usr/local/zookeeper/zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg#默认是没有zoo.cfg的所有要将zoo_sample.cfg改名
vim zoo.cfg#配置zoo.cfg
#修改data文件目录
dataDir=/usr/local/zookeeper/zookeeper-3.4.14/data

#zookeeper集群的节点,添加到末尾
server.1=susur1:2888:3888
server.2=susur2:2888:3888
server.3=susur3:2888:3888
mkdir -p /usr/local/zookeeper/zookeeper-3.4.14/data
echo 1 > /usr/local/zookeeper/zookeeper-3.4.14/data/myid
vim /etc/profile

#zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH
zkServer.sh start
zkServer.sh status
zkServer.sh stop

搭建hadooper*

http://hadoop.apache.org/releases.html 同上官网下载tar包(下载bin版本)我用的是版本是2.7.7

mkdir /usr/local/hadoop

tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/hadoop/
cd /usr/local/hadoop/hadoop-2.7.7/etc/hadoop

将这个三个文件中的JAMA_HOME路径改为系统上的jdk路径

export JAVA_HOME=/usr/local/java/jdk1.8.0_221/
  <property>
  <name>fs.defaultFS</name>
  <value>hdfs://susur</value>
  </property>
  <property>
  <name>ha.zookeeper.quorum</name>
  <value>susur1:2181,susur2:2181,susur3:2181</value>
  </property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
  <property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hadoop/hadoop-2.7.7/tmp</value>
  </property>
 <property>
        <name>dfs.nameservices</name>
        <value>susur</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.susur</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.susur.nn1</name>
        <value>susur1:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.susur.nn2</name>
        <value>susur2:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.susur.nn1</name>
        <value>susur1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.susur.nn2</name>
        <value>susur2:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://susur1:8485;susur2:8485;susur3:8485/susur</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/var/tmp/hadoop/ha/jn</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.susur</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
        <value>shell(true)</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_dsa</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
   
   <!--访问免验证-->
   <property>
        <name>dfs.permissions</name>
        <value>false</value>
        <description>
            If "true", enable permission checking in HDFS.
            If "false", permission checking is turned off,
            but all other behavior is unchanged.
            Switching from one parameter value to the other does not change the mode,
            owner or group of files or directories.
        </description>
    </property>
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>

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

  <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
  </property>
  
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>mr_susur</value>
  </property>
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>susur3</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>susur1</value>
  </property>
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>susur1:2181,susur2:2181,susur3:2181</value>
  </property>
susur1
susur2
susur3
#hadoope
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.7
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
start-dfs.sh
#如主节点上的jps如下
[root@susur1 ~]# jps
49536 JournalNode
45713 QuorumPeerMain
50130 NodeManager
49253 DataNode
50469 Jps
49080 NameNode
49944 ResourceManager
49773 DFSZKFailoverController

访问网页 susur1:50070(要访问主节点,status查看zookeeper的主节点是哪个)

Hbase安装与配置

https://hbase.apache.org/downloads.html
官网下载合适的版本,我下的是1.3.5,上传到Linux 解压tar包(下载bin包);

mkdir /usr/local/hbase

tar -zxvf hbase-1.3.5-bin.tar.gz -C /usr/local/hbase
zkServer.sh start
start-all.sh
[3] yarn-daemon.sh start resourcemanager

-启动HBase

[1] start-hbase.sh

安装配置Hive

#由于hive是基于mysql存储的所以需要一个对应的库

create database hive;
mkdir /usr/local/hive

tar -zxvf apache-hive-2.3.6-bin.tar.gz -C /usr/local/hive
cp hive-default.xml.template hive-site.xml
vim hive-site.xml

<!--设置库名-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive</value>
</property>
<!--配置RDBMS本地存储-->
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!--配置mysql连接,如果没有hive库则新建-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>

<!--配置jdbc驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--mysql用户名root-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--配置mysql密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
cp /usr/local/hive/apache-hive-2.3.6-bin/lib/jine-2.12.jar /usr/local/hadoop/hadoop-2.7.7/share/hadoop/yarn/lib
vim /etc/profile

#hive
export HIVE_HOME=/usr/local/hive/apache-hive-2.3.6-bin
export PATH=$HIVE_HOME/bin:$PATH

hive

注意事项以及一些可能会遇到的问题

#关闭防火墙
systemctl stop firewalld.service
#禁止开机启动
systemctl disable firewalld.service 
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
grant all privileges on *.* to 'root'@'%' identified by '123456';

如果主机navicat连接虚拟机上的mysql,设置ssh连接

上一篇 下一篇

猜你喜欢

热点阅读