Практика построения локального хранилища данных кластера виртуальных машин

Большие данные

Ссылка в этой статьеШан Силиконовая долинанастройка видео, есть много компонентов, которые можно настроить по мере необходимости

1. Подготовка окружающей среды

  1. Память 4Гб, жесткий диск 50Гб (в соответствии с конфигурацией вашего компьютера лучше начинать с 4Гб памяти)
  2. Установить линукс /загрузка 200M /своп 2g / осталось
  3. * Установите вмтулс
  4. отключить брандмауэр
 sudo service iptables stop
 sudo chkconfig iptables off
  1. Установить статический IP, изменить имя хоста Отредактируйте vim /etc/sysconfig/network-scripts/ifcfg-eth0, вот IP-адрес 192.168.1.101 в качестве примера, конкретный IP-адрес зависит от вашей компьютерной сети. изменить на
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="eth0"
IPADDR=192.168.1.101
PREFIX=24
GATEWAY=192.168.1.2
DNS1=192.168.1.2
编辑vim /etc/sysconfig/network
改HOSTNAME=那一行
  1. настроить /etc/hosts вим /и т.д./хост
192.168.1.100   hadoop100
192.168.1.101   hadoop101
192.168.1.102   hadoop102
192.168.1.103   hadoop103
192.168.1.104   hadoop104
192.168.1.105   hadoop105
  1. Создайте общего пользователя xxx (указываете сами) и настройте для него пароль пользовательдобавить ххх пароль ххх

  2. Настройте этого пользователя как sudoers ВИМ /etc/sudoers в корне ВСЕ=(ВСЕ) ВСЕ Добавить xxx ALL=(ALL) NOPASSWD:ALL wq!принудительное сохранение при сохранении

  3. *Создайте две папки module и software в каталоге /opt и назначьте права собственности на только что созданный xxx (укажите пользователя самостоятельно) mkdir /opt/модуль /opt/программное обеспечение chown xxx:xxx /opt/module /opt/программное обеспечение

  4. Завершение работы, моментальный снимок, клонирование (в зависимости от ваших потребностей клонируйте как минимум три или более виртуальных машин)

Отсюда войдите в систему как обычный пользователь xxx

  1. Измените IP клонированной виртуальной машины, см. пункты 4 и 5 выше

  2. сделать скрипт раздачи компакт-диск ~ вим xsync Содержание следующее:

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=102; host<104; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
chmod +x xsync

sudo cp xsync /bin

sudo xsync /bin/xsync
  1. Настроить вход без пароля

    1. 生成密钥对
    ssh-keygen -t rsa 三次回车
    
    2. 发送公钥到本机
    ssh-copy-id hadoop102 输入一次密码
    
    3. 分别ssh登陆一下所有虚拟机
    ssh hadoop102
    exit
    ssh hadoop103
    exit
    ssh hadoop104
    exit
    
    4. 把/home/xxx/.ssh 文件夹发送到集群所有服务器
    xsync /home/xxx/.ssh
    
  2. Установите Java и Hadoop на одну машину, настройте переменные среды и распространите на другие машины в кластере.

    1. 拷贝文件到/opt/software,两个tar包
    
    2. tar -zxf h"+tab" -C /opt/module
    
    3. tar -zxf j"+tab" -C /opt/module
    
    4. sudo vim /etc/profile
    
    在文件末尾添加
    
 #JAVA_HOME
        export JAVA_HOME=/opt/module/jdk1.8.0_144
        export PATH=$PATH:$JAVA_HOME/bin

        #HADOOP_HOME
        export HADOOP_HOME=/opt/module/hadoop-2.7.2
        export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    保存
    5. source /etc/profile
    
    6. sudo xsync /etc/profile
    
    7. 在其他机器分别执行source /etc/profile

### Все файлы конфигурации находятся в $HADOOP_HOME/etc/hadoop 14. Сначала настройте файлы hadoop-env.sh, yarn-env.sh, mapred-env.sh, настройте JAVA_HOME Добавьте export JAVA_HOME=/opt/module/jdk1.8.0_144 во вторую строку каждого файла.

  1. Настроить Core-site.xml

    <!-- 指定HDFS中NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:9000</value>
    </property>
    
    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.7.2/data/tmp</value>
    </property>
    
  2. настроить hdfs-site.xml dfs.replication 3 dfs.namenode.secondary.http-адрес хауп104:50090

  3. Настройте yarn-site.xml

    <!-- Site specific YARN configuration properties -->
    <!-- Reducer获取数据的方式 -->
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    <!-- 日志聚集功能使能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    
    <!-- 日志保留时间设置7天 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
    
  4. Настройте mapred-site.xml mapreduce.framework.name пряжа

    mapreduce.jobhistory.address hadoop104:10020 mapreduce.jobhistory.webapp.address hadoop104:19888

    Запустите сервер истории: mr-jobhistory-daemon.sh start historyserver

  5. Настройка ведомых устройств хауп102 хауп103 хауп104

  6. профиль распространения xsync/opt/модуль/hadoop-2.7.2/и т. д.

  7. Форматирование Namenode в hadoop102 hdfs namenode -format

  8. запустить hdfs старт-dfs.sh

  9. Выполнить на машине с настроенным Resourcemanager Запустите start-yarn.sh на Hadoop103.

  10. mkdir input vim input/input hadoop fs -put input / hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output

  11. Закрыть кластер стоп-dfs.sh стоп-пряжа.ш

  12. hadoop-daemon.sh запускает namenode или datanode

yarn-daemon.sh запустить менеджер ресурсов или менеджер узлов

如果集群出了问题
    cd $HADOOP_HOME
    rm -rf data logs
    回到21

2. Установка JDK

JDK — это набор инструментов для разработки Java и ядро ​​всей Java, включая среду выполнения Java, инструменты Java и базовую библиотеку классов Java.JDK — это основа для изучения технологии больших данных. Программа установки создаваемого распределенного кластера Hadoop разработана на Java.Все распределенные кластеры Hadoop должны быть установлены с JDK, если они хотят нормально работать.

(1) Удалите существующий JDK на 3 виртуальных машинах соответственно.

① 检查计算机中是否已安装 Java 软件。

[xxx@hadoop102 opt]$ rpm -qa | grep java

② 如果安装的版本低于 1.7,则卸载该 JDK。

[xxx@hadoop102 opt]$ пакет sudo rpm -e

(2) Импортируйте JDK в папку программного обеспечения в каталоге opt.

① Проверьте, успешно ли импортирован пакет в каталог opt в Linux.

[xxx@hadoop102 opt]cdsoftware/[xxx@hadoop102software] cd software/ [xxx@hadoop102 software] ls hadoop-2.7.2.tar.gz jdk-8u144-linux-x64.tar.gz

 ② 解压 JDK 到/opt/module 目录下,tar 命令用来解压.tar 或者.tar.gz 格式的压缩包,通过-z 选项指定解压.tar.gz 格式的压缩包。-f 选项用于指定解压文件,-x 选项用于指定解包操作,-v 选项用于显示解压过程,-C 选项用于指定解压路径。

[xxx@hadoop102 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/ module/

(3) Настройте переменные среды JDK, чтобы упростить использование программ JDK для вызова JDK.

① 先获取 JDK 路径。

[xxx@hadoop102 jdk1.8.0_144]$ pwd /opt/module/jdk1.8.0_144

② 打开/etc/profile 文件,需要注意的是,/etc/profile 文件属于 root 用户,需要使用 sudo vim 命令才可以对它进行编辑。

[программное обеспечение xxx@hadoop102]$ sudo vim /etc/profile Добавьте путь JDK в конец файла профиля и добавьте следующее содержимое.

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin 

Выйти после сохранения. :wq

③ 修改/etc/profile 文件后,需要执行 source 命令使修改后的文件生效。

[xxx@hadoop102 jdk1.8.0_144]$ source /etc/profile

(4) Проверьте, успешно ли установлен JDK, выполнив команду java -version.

[xxx@hadoop102 jdk1.8.0_144]# версия java перезапуск версии java "1.8.0_144" (если доступна команда java -version, перезапуск не требуется).

[xxx@hadoop102 jdk1.8.0_144]sync[xxx@hadoop102jdk1.8.0144] sync [xxx@hadoop102 jdk1.8.0_144] sudo reboot

(5) Распространите JDK на все серверы узлов. [xxx@hadoop102 jdk1.8.0_144]$ xsync /opt/module/jdk1.8.0_144

(6) Распределите переменные среды. [xxx@hadoop102 jdk1.8.0_144]$ xsync /etc/profile

(7) Выполните исходную команду, чтобы переменная среды вступила в силу на каждой виртуальной машине. [xxx@hadoop103 jdk1.8.0_144]source/etc/profile[xxx@hadoop104jdk1.8.0144] source /etc/profile [xxx@hadoop104 jdk1.8.0_144] source /etc/profile

3. Процесс установки Hadoop

При построении распределенного кластера Hadoop конфигурация Hadoop на каждом сервере узла в основном одинакова, поэтому вам нужно работать только на сервере узла hadoop102, а затем синхронизироваться с двумя другими серверами узлов после завершения настройки.

(1) Импортируйте установочный пакет Hadoop hadoop-2.7.2.tar.gz в папку программного обеспечения в каталоге opt, предназначенном для хранения установочных пакетов каждого программного обеспечения.

① Введите путь к установочному пакету Hadoop. [xxx@hadoop102 ~]$ cd /opt/software/

② Разархивируйте установочный пакет в файл /opt/module. [ПО xxx@hadoop102]$ tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

③ Проверьте, прошла ли декомпрессия успешно. [ПО xxx@hadoop102]$ ls /opt/module/hadoop-2.7.2

(2) Добавьте Hadoop в переменную среды, вы можете напрямую использовать инструкции, связанные с Hadoop, для работы без указания каталога Hadoop.

① Получите путь установки Hadoop. [xxx@hadoop102 hadoop-2.7.2]$ pwd /opt/модуль/hadoop-2.7.2

② Откройте файл /etc/profile. [xxx@hadoop102 hadoop-2.7.2]$ sudo vim /etc/profile Добавьте путь Hadoop в конец файла профиля следующим образом.

##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

③ Сохраните и выйдите. :wq

④ Выполните исходную команду, чтобы измененный файл вступил в силу.

[xxx@ hadoop102 hadoop-2.7.2]$ source /etc/profile

(3) Проверьте, прошла ли установка успешно.

[xxx@hadoop102 ~]$ hadoop version Hadoop 2.7.2

(4) Перезапустите (если доступна команда hadoop, перезапуск не требуется).

[xxx@ hadoop101 hadoop-2.7.2]$ sync

[xxx@ hadoop101 hadoop-2.7.2]$ sudo reboot

(5) Распространите Hadoop на все узлы. [xxx@hadoop100 hadoop-2.7.2]$ xsync /opt/module/hadoop-2.7.2

(6) Распределите переменные среды. [xxx@hadoop100 hadoop-2.7.2]$ xsync /etc/profile

(7) Выполните исходную команду, чтобы переменная среды вступила в силу на каждой виртуальной машине.

[xxx@hadoop103 hadoop-2.7.2]$ source /etc/profile

[xxx@hadoop104 hadoop-2.7.2]$ source /etc/profile

Режимы работы Hadoop включают локальный режим, псевдораспределенный режим и полностью распределенный режим. На этот раз мы в основном строим полностью распределенный режим, который обычно используется в реальной производственной среде.Прежде чем строить полностью распределенный режим, нам нужно заранее спланировать развертывание кластера и не концентрировать слишком много сервисов на одном узле сервера. Мы развертываем NameNode и ResourceManager, отвечающие за работу по управлению, на двух серверах узлов соответственно, и развертываем SecondaryNameNode на другом сервере узлов.Все серверы узлов берут на себя роли DataNode и NodeManager, а DataNode и NodeManager обычно хранятся на одном сервере узлов.Все роли должны распределяться максимально равномерно.

(1) План развертывания кластера показан в таблице 3-1.在这里插入图片描述

(2) Назначение ролей кластера в основном зависит от файла конфигурации.Подробности настройки файла кластера приведены ниже.

① Основным файлом конфигурации является core-site.xml, который относится к глобальному файлу конфигурации Hadoop. В основном мы настраиваем адрес входа распределенной файловой системы NameNode и место, где данные в распределенной файловой системе попадают на локальный диск. сервера.Код следующий.

[xxx@hadoop102 hadoop]$ vim core-site.xml

<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<!-- 其中,hdfs 为协议名称,hadoop102 为 NameNode 的节点服务器主机名称,9000 为端口-->
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定 Hadoop 运行时产生的文件的存储目录,该目录需要单独创建 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

② Файл конфигурации среды Hadoop — hadoop-env.sh.В этом файле конфигурации нам в основном нужно указать путь JAVA_HOME JDK, чтобы избежать исключения, когда JAVA_HOME не может быть найден во время работы программы.

[xxx@hadoop102 hadoop]$ vim hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

③ Файл конфигурации HDFS — hdfs-site.xml В этом файле конфигурации мы в основном настраиваем свойства файловой системы HDFS.

[xxx@hadoop102 hadoop]$ vim hdfs-site.xml

<!-- 指定 HDFS 存储内容的副本个数 -->
<!-- Hadoop 通过使用文件的冗余来确保文件存储的可靠性,由于有 3 个 DataNode,所以我们可以将
副本数量设置为 3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--配置 Hadoop 分布式集群的 SecondaryNameNode-->
<!--SecondaryNameNode 主要作为 NameNode 的辅助,端口为 50090 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>

④ Файл конфигурации среды YARN — yarn-env.sh, также указан путь JAVA_HOME JDK.

[xxx@hadoop102 hadoop]$ vim yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

⑤ Что касается файла конфигурации YARN yarn-site.xml, в основном настраиваются следующие два параметра.

[xxx@hadoop102 hadoop]$ vim yarn-site.xml

<!-- reducer 获取数据的方式 -->
<!-- yarn.nodemanager.aux-services 是 NodeManager 上运行的附属服务,其值需要配置成
mapreduce_shuffle 才可以运行 MapReduce 程序 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>

⑥ Файл конфигурации среды MapReduce называется mapred-env.sh, а также указан путь JAVA_HOME JDK.

[xxx@hadoop102 hadoop]$ vim mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

⑦ Что касается файла конфигурации mapred-site.xml MapReduce, то он в основном настраивает параметр, указывающий, что работающей средой MapReduce является YARN.

[xxx@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml

[xxx@hadoop102 hadoop]$ vim mapred-site.xml

<!-- MapReduce 计算框架的资源交给 YARN 来管理 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

⑧ Роли сервера главного узла NameNode и ResourceManager были настроены в файле конфигурации, и необходимо указать роль сервера подчиненного узла Файл конфигурации slaves используется для настройки роли каждого сервера подчиненного узла в Hadoop распределенный кластер. Как показано ниже, измените файл подчиненных устройств, назначьте все три сервера узлов подчиненными узлами и запустите процессы DataNode и NodeManager.

/opt/module/hadoop-2.7.2/etc/hadoop/slaves

[xxx@hadoop102 hadoop]$ vim slaves

hadoop102
hadoop103
hadoop104

⑨ Распространите настроенные файлы конфигурации Hadoop в кластере, чтобы все три узловых сервера могли использовать одну и ту же конфигурацию Hadoop, а затем вы можете запускать команды через разные процессы.

[xxx@hadoop102 hadoop]$ xsync /opt/module/hadoop-2.7.2/

⑩ Проверьте распространение файлов.

[xxx@hadoop103 hadoop]$ cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

(3) Создайте каталог данных. В соответствии с информацией о расположении на локальном диске /opt/module/hadoop-2.7.2/data/tmp распределенной файловой системы, настроенной в файле core-site.xml и, наконец, размещенной на каждом узле данных, создайте этот каталог самостоятельно.

[xxx@hadoop102 hadoop-2.7.2]$ mkdir /opt/module/hadoop-2.7.2/data/tmp

[xxx@hadoop103 hadoop-2.7.2]$ mkdir /opt/module/hadoop-2.7.2/data/tmp

[xxx@hadoop104 hadoop-2.7.2]$ mkdir /opt/module/hadoop-2.7.2/data/tmp

(4) Запустите распределенный кластер Hadoop.

① Если вы запускаете кластер в первый раз, вам необходимо отформатировать NameNode.

[xxx@hadoop102 hadoop-2.7.2]$ hadoop namenode -format

② После настройки сервера узла NameNode запустите HDFS, выполнив команду start-dfs.sh, после чего все узлы DataNodes и SecondaryNameNodes могут быть запущены одновременно.

[xxx@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh

[xxx@hadoop102 hadoop-2.7.2]$ jps

4166 NameNode

4482 Jps

4263 DataNode

[xxx@hadoop103 hadoop-2.7.2]$ jps

3218 DataNode

3288 Jps

[xxx@hadoop104 hadoop-2.7.2]$ jps

3221 DataNode

3283 SecondaryNameNode

3364 Jps

③ Запустите YARN, выполнив команду start-yarn.sh, чтобы одновременно запустить ResourceManager и все NodeManager. Следует отметить, что если NameNode и ResourceManger не находятся на одном сервере, YARN не может быть запущен на NameNode, и YARN следует запускать на сервере, где находится ResouceManager.

[xxx@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

Выполнив команду jps, вы можете просмотреть статус запуска процесса на каждом сервере node.Если отображается следующее содержимое, запуск выполнен успешно.

[xxx@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

[xxx@hadoop102 hadoop-2.7.2]$ jps

4166 NameNode 4482 Jps 4263 DataNode 4485 NodeManager

[xxx@hadoop103 hadoop-2.7.2]$ jps

3218 DataNode 3288 Jps 3290 ResourceManager 3299 NodeManager

[xxx@hadoop104 hadoop-2.7.2]$ jps

3221 DataNode 3283 SecondaryNameNode 3364 Jps 3389 NodeManager

(5) Проверьте, успешно ли запущен кластер через веб-интерфейс.

① Введите адрес сервера узла и порт 50070 ранее настроенного узла NameNode на веб-стороне, чтобы просмотреть файловую систему HDFS. Например, введите в браузереhttp://hadoop102:50070, можете проверитьЯвляются ли NameNode и DataNode нормальными. Веб-сторона NameNode показана на рис. 3-40.

在这里插入图片描述

② Введя адрес ResourceManager и порт 8088 на веб-сайте, вы сможете просматривать текущее состояние задач в YARN. Например, набрав в браузереhttp://hadoop103:8088, вы можете просмотреть текущий статус YARN в этом кластере. Веб-сторона YARN показана на рисунке 3-41.

在这里插入图片描述

(6) Запустите экземпляр PI и проверьте, успешно ли запущен кластер. Выполните следующую команду на любом сервере-узле в кластере.Если вы видите результат выполнения, как показано на рисунке 3-42, кластер успешно запущен.

[xxx@hadoop102 hadoop]$ cd /opt/module/hadoop2.7.2/share/hadoop/mapreduce/

[xxx@hadoop102 mapreduce]$ hadoop jar hadoop-mapreduce-examples2.7.2.jar pi 10 10

在这里插入图片描述Окончательный результат: Оценочное значение Pi равно 3,20000000000000000000.

4. Установка зоопарка

1. Кластерное планирование Разверните Zookeeper на трех узловых серверах Hadoop102, Hadoop103 и Hadoop104.

2. Разархивируйте установку (1) Разархивируйте установочный пакет Zookeeper в каталог /opt/module/. [программное обеспечение xxx@hadoop102]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/

(2) Создайте папку zkData в каталоге /opt/module/zookeeper-3.4.10 для сохранения данных, связанных с Zookeeper.

mkdir -p zkData

3. Настройте файл zoo.cfg (1) Переименуйте zoo_sample.cfg в каталоге /opt/module/zookeeper-3.4.10/conf в zoo.cfg, в нем мы сможем настроить конфигурацию.

mv zoo_sample.cfg zoo.cfg

(2) Для конкретной конфигурации найдите следующее содержимое в файле конфигурации и установите каталог хранения данных dataDir в папку zkData, созданную вами выше.

dataDir=/opt/module/zookeeper-3.4.10/zkData

Добавьте следующую конфигурацию, в которой указана информация о 3-х узловых серверах кластера Zookeeper. #######################кластер########################### сервер.2=hadoop102:2888:3888 сервер.3=hadoop103:2888:3888 сервер.4=hadoop104:2888:3888

(3) Интерпретация параметров конфигурации. Сервер.A=B:C:D. A — число, обозначающее номер сервера; B — IP-адрес этого сервера; C – порт, через который данный сервер обменивается информацией с сервером-лидером в кластере; D означает, что когда ведущий сервер в кластере не работает нормально, необходим порт для повторного выбора и избрания нового ведущего сервера, и этот порт используется для связи друг с другом во время выборов. Настройте файл myid в режиме кластера.Этот файл находится в каталоге dataDir, и одним из данных является значение A. Zookeeper считывает этот файл при запуске и сравнивает данные в нем с информацией о конфигурации в файле zoo.cfg. файл, чтобы определить, какой это сервер.

4. Кластерная операция (1) Создайте файл myid в каталоге /opt/module/zookeeper-3.4.10/zkData, который Zookeeper будет читать при запуске кластера.

touch myid

Примечание. При добавлении файла myid он должен быть создан в Linux, а при создании в текстовом редакторе могут появиться искаженные символы.

(2) Отредактируйте файл myid.

vim myid

Добавьте номер, соответствующий серверу в файле, и добавьте его в соответствии с соответствующей связью между идентификатором сервера, настроенным в файле zoo.cfg, и IP-адресом сервера узла, например, добавив 2 к серверу узла hadoop102.

(3) Скопируйте настроенный Zookeeper на другие серверы.

xsync /opt/module/zookeeper-3.4.10

Измените содержимое файлов myid на серверах узлов hadoop103 и hadoop104 на 3 и 4 соответственно.

(4) Запустите Zookeeper на трех узловых серверах соответственно.

[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh start

[root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh start

[root@hadoop104 zookeeper-3.4.10]# bin/zkServer.sh start

(5) Выполните следующую команду, чтобы просмотреть статус службы Zookeeper на трех узловых серверах.

[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh status

JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: follower

[root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh status

JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: leader

[root@hadoop104 zookeeper-3.4.5]# bin/zkServer.sh status

JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: follower

(6) Напишите сценарий для запуска и остановки кластера ZK.

1) Создайте скрипт в каталоге /home/xxx/bin Hadoop102.

[xxx@hadoop102 bin]$ vim zk.sh

Напишите в скрипте следующее

#! /bin/bash
case $1 in
"start"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
	done
};;
"stop"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
	done
};;
"status"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh status"
	done
};;
esac

2) Увеличьте разрешение на выполнение скрипта [xxx@hadoop102 bin]$ chmod 777 zk.sh

3) Скрипт запуска кластера Zookeeper [модуль xxx@hadoop102]$ запуск zk.sh

4) Скрипт остановки кластера Zookeeper [модуль xxx@hadoop102]$ zk.sh стоп

5. Установка дымохода

(1) Загрузите apache-flume-1.7.0-bin.tar.gz в каталог /opt/software Linux.

(2) Распакуйте apache-flume-1.7.0-bin.tar.gz в каталог /opt/module/.

[xxx@hadoop102 software]$ tar -zxf apache-flume-1.7.0-bin.tar.gz -C /opt/module/

(3) Измените имя apache-flume-1.7.0-bin на flume.

[xxx@hadoop102 module]$ mv apache-flume-1.7.0-bin flume

(4) Измените имя файла flume-env.sh.template в каталоге flume/conf на flume-env.sh, настройте файл flume-env.sh и добавьте путь JAVA_HOME в файл конфигурации, как показано ниже. ниже.

[xxx@hadoop102 conf]$ mv flume-env.sh.template flume-env.sh

[xxx@hadoop102 conf]$ vim flume-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

(5) Распространите настроенный Flume на другие серверы узлов в кластере.

(6) Напишите сценарии запуска и остановки Flume

1) Создайте скрипт сбора логов f1.sh в каталоге /home/xxx/bin [xxx@hadoop102 bin]$ vim f1.sh Заполните следующий контент в скрипте

#! /bin/bash
case $1 in
"start"){
	for i in hadoop102 hadoop103
	do
		echo " --------启动 $i 采集 flume-------"
		ssh $i "nohup /opt/module/flume/bin/flume-ng agent --conf-file /opt/module/flume/conf/file-flume-kafka.conf --name a1 -Dflume.root.logger=INFO,LOGFILE >/opt/module/flume/test1 2>&1 &"
	done
};;
"stop"){
	for i in hadoop102 hadoop103
	do
		echo " --------停止 $i 采集 flume-------"
		ssh $i "ps -ef | grep file-flume-kafka | grep -v grep |awk '{print \$2}' | xargs kill"
		done
};;
esac

Примечание 1: nohup, эта команда может продолжить выполнение соответствующего процесса после выхода из учетной записи/закрытия терминала. nohup означает не зависать, выполнять команду без зависания. Примечание 2: разделителем по умолчанию в awk является пробел Примечание 3: xargs означает получение результата выполнения предыдущей команды в качестве входного параметра следующей команды.

2) Увеличьте разрешение на выполнение скрипта [xxx@hadoop102 bin]$ chmod 777 f1.sh

3) скрипт запуска кластера f1 [модуль xxx@hadoop102]$ запуск f1.sh

4) скрипт остановки кластера f1 [модуль xxx@hadoop102]$ f1.sh стоп

5).Создать сценарий запуска и остановки Flume потребления журнала

1) Создайте скрипт f2.sh в каталоге /home/xxx/bin [xxx@hadoop102 bin]$ vim f2.sh Заполните следующий контент в скрипте

#! /bin/bash
case $1 in
"start"){
	for i in hadoop104
	do
		echo " --------启动 $i 消费 flume-------"
		ssh $i "nohup /opt/module/flume/bin/flume-ng agent --conf-file /opt/module/flume/conf/kafka-flume-hdfs.conf --name a1  -Dflume.root.logger=INFO,LOGFILE >/opt/module/flume/log.txt 2>&1 &"
	done
};;
"stop"){
	for i in hadoop104
	do
		echo " --------停止 $i 消费 flume-------"
		ssh $i "ps -ef | grep kafka-flume-hdfs | grep -v grep |awk '{print \$2}' | xargs kill"
	done
};;
esac

2) Увеличьте разрешение на выполнение скрипта [xxx@hadoop102 bin]$ chmod 777 f2.sh

3) скрипт запуска кластера f2 [модуль xxx@hadoop102]$ запуск f2.sh

4) скрипт остановки кластера f2 [модуль xxx@hadoop102]$ f2.sh стоп

6. Установка Кафки

Kafka — отличная распределенная система очередей сообщений.Прежде всего отправляя сообщения журнала в Kafka, можно избежать риска потери данных, увеличить масштабируемость обработки данных, повысить гибкость и пиковую производительность обработки данных, а систему доступность может быть улучшена.Это обеспечивает гарантию порядка для потребления сообщений, а также может контролировать и оптимизировать скорость потока данных через систему, решая проблему несогласованных скоростей создания и потребления сообщений. Кластеры Kafka должны полагаться на Zookeeper для предоставления услуг по сохранению некоторой информации метаданных для обеспечения доступности системы. После завершения установки Zookeeper вы можете установить Kafka.Конкретные шаги установки следующие.

(1) Кластерное планирование Kafka показано в таблице 4-1.在这里插入图片描述

(2) Загрузите установочный пакет. Загрузите установочный пакет Kafka. адресkafka.apache.org/downloads Также…

(3) Разархивируйте установочный пакет. [программное обеспечение xxx@hadoop102]$ tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/

(4) Измените имя распакованного файла. [модуль xxx@hadoop102]$ mv kafka_2.11-0.11.0.0/kafka

(5) Создайте папку журналов в каталоге /opt/module/kafka для сохранения файлов журналов, созданных во время работы Kafka. [xxx@hadoop102kafka]$ журналы mkdir

(6) Войдите в каталог конфигурации Kafka, откройте server.properties и измените файл конфигурации.Файлы конфигурации Kafka существуют в виде пар ключ-значение.Основное содержимое, которое необходимо изменить, выглядит следующим образом.

[xxx@hadoop102 kafka]$ cd config/

[xxx@hadoop102 config]$ vi server.properties

Найдите соответствующую конфигурацию и измените ее следующим образом.

#broker 的全局唯一编号,不能重复
broker.id=0
#配置删除 Topic 功能为 true,即在 Kafka 中删除 Topic 为真正删除,而不是标记删除
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘 I/O 的线程数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#Kafka 运行日志存放的路径,配置为自行创建的 logs 文件夹
log.dirs=/opt/module/kafka/logs
#Topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#数据文件保留的最长时间,超时则被删除
log.retention.hours=168
#配置连接 Zookeeper 集群的地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181

(7) Настройте переменные среды и настройте каталог установки Kafka в переменных системной среды, что может упростить пользователям выполнение команд, связанных с Kafka. После настройки переменных среды вам необходимо выполнить исходную команду, чтобы переменные среды вступили в силу.

[root@hadoop102 module]# vim /etc/profile

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

[root@hadoop102 module]# source /etc/profile

(8) После того, как установка и конфигурация будут изменены, распространите пакет установки и переменные среды на другие серверы узлов в кластере и заставьте переменные среды действовать.

[root@hadoop102 etc]# xsync profile

[xxx@hadoop102 module]$ xsync kafka/

(9) Изменить Broker.id. Измените Broker.id=1 и Broker.id=2 в файле конфигурации /opt/module/kafka/config/server.operties на Hadoop103 и Hadoop104 соответственно. Примечание. Broker.id — это идентификатор, который идентифицирует разные серверы узлов в кластере Kafka и не может повторяться. (10) Запустите кластер. Запустите Kafka на Hadoop102, Hadoop103 и Hadoop104 по очереди.

[xxx@hadoop102 kafka]$ bin/kafka-server-start.sh config/server.properties &

[xxx@hadoop103 kafka]$ bin/kafka-server-start.sh config/server.properties &

[xxx@hadoop104 kafka]$ bin/kafka-server-start.sh config/server.properties &

(11) Выключите кластер.

[xxx@hadoop102 kafka]$ bin/kafka-server-stop.sh stop

[xxx@hadoop103 kafka]$ bin/kafka-server-stop.sh stop

[xxx@hadoop104 kafka]$ bin/kafka-server-stop.sh stop

(12) Сценарий запуска и остановки кластера Kafka

1) Создайте скрипт kf.sh в каталоге /home/xxx/bin [xxx@hadoop102 bin]$ vim kf.sh Заполните следующий контент в скрипте

#! /bin/bash
case $1 in
"start"){
	for i in hadoop102 hadoop103 hadoop104
	do
		echo " --------启动 $i Kafka-------"
		ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties "
	done
};;
"stop"){
	for i in hadoop102 hadoop103 hadoop104
	do
		echo " --------停止 $i Kafka-------"
		ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"
	done
};;
esac

2) Увеличьте разрешение на выполнение скрипта

[xxx@hadoop102 bin]$ chmod 777 kf.sh

3) скрипт запуска кластера kf

[xxx@hadoop102 module]$ kf.sh start

4) скрипт остановки кластера kf

[xxx@hadoop102 module]$ kf.sh stop

7. Установка MySQL

1. Подготовка инсталляционного пакета (1) Используйте команду rpm с символом вертикальной черты, чтобы проверить, была ли установлена ​​MySQL.Опция -q — запрос, а опция -a — все, что означает запросить все установки.Если MySQL уже установлена, удалите ее.

① Проверьте, установлен ли MySQL.

[root@hadoop102 рабочий стол]# rpm -qa | grep MySQL

mysql-libs-5.1.73-7.el6.x86_64

② Удалить, параметр -e означает удаление, а параметр --nodeps означает принудительное удаление независимо от всех зависимостей.

[root@hadoop102 рабочий стол]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

(2) Загрузите установочный пакет MySQL mysql-libs.zip в каталог /opt/software и распакуйте его.

[root@hadoop102 software]# unzip mysql-libs.zip

[root@hadoop102 software]# ls mysql-libs.zip mysql-libs

2. Установить сервер MySQL

(1) Чтобы установить сервер MySQL, используйте команду rpm для установки MySQL.Опция -i указывает на установку, опция -v указывает на видение, а опция -h показывает процесс установки.

[root@hadoop102 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm

(2) После завершения установки на стороне сервера будет сгенерирован случайный пароль по умолчанию и сохранен в файле /root/.mysql_secret Пользователь root может напрямую использовать команду cat или команду sudo cat для просмотра сгенерированного случайного пароля. , После входа в MySQL пароль нужно сразу поменять.

[root@hadoop102 mysql-libs]# cat /root/.mysql_secret OEXaQuS8IWkG19Xs

(3) Войдите в систему как пользователь root или используйте команду sudo для просмотра рабочего состояния службы MySQL, вы можете видеть, что теперь она находится в состоянии «MySQL не работает…».

[root@hadoop102 mysql-libs]# статус службы mysql MySQL не работает…

(4) Войдите в систему как пользователь root или используйте команду sudo для запуска MySQL.

[root@hadoop102 mysql-libs]# service mysql start

3. Установите клиент MySQL (1) Установите клиент MySQL с помощью команды rpm.

[root@hadoop102 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm

(2) Войдите в MySQL, войдите в систему как пользователь root, а пароль — это случайный пароль, автоматически сгенерированный при установке сервера.

[root@hadoop102 mysql-libs]# mysql -uroot -pOEXaQuS8IWkG19Xs

(3) После входа в MySQL немедленно измените пароль и запомните пароль после смены пароля.

mysql>SET PASSWORD=PASSWORD('000000');

(4) Выйдите из MySQL.

mysql>exit

4. Конфигурация хоста для пользовательской таблицы в MySQL Поскольку к MySQL необходимо получить доступ через соединение Hive, во избежание проблем с разрешениями мы можем настроить MySQL для входа в MySQL с использованием имени пользователя root и пароля на любом хосте. Для этого нам нужно изменить пользовательскую таблицу MySQL, Конкретные шаги заключаются в следующем.

(1) Введите установленный пароль для входа в MySQL в качестве пользователя root.

[root@hadoop102 mysql-libs]# mysql -uroot -p000000

(2) Показать все текущие базы данных MySQL.

mysql>show databases;

(3) Используйте базу данных MySQL.

mysql>use mysql;

(4) Показать все таблицы в базе данных MySQL.

mysql>show tables;

(5) В таблице пользователей хранится такая информация, как пользователи и пароли, которым разрешен вход в MySQL, и показана структура таблицы пользователей.Можно обнаружить, что в таблице пользователей много полей.

mysql>desc user;

(6) Запросите некоторые поля хост, пользователь и пароль в таблице пользователей, чтобы отобразить ключевую информацию.Вы можете увидеть 4 фрагмента информации.Хосты: localhost, hadoop102, 127.0.0.1 и ::1.Все эти 4 хоста указывают что только эта машина может подключиться к MySQL.

mysql>select user, host, password from user;

(7) Измените таблицу пользователей и измените значение поля хоста на %, чтобы любой хост мог подключиться к MySQL через пользователя root + пароль.

mysql>update user set host='%' where host='localhost';

(8) Другие хосты пользователя root должны быть удалены, чтобы "%" вступило в силу.

mysql>delete from user where Host='hadoop102 '; mysql>delete from user where Host='127.0.0.1'; mysql>delete from user where Host='::1';

(9) Обновите разрешения, чтобы изменения вступили в силу.

mysql>flush privileges;

(10) ВЫХОД.

mysql> quit;

8. Установка Sqoop

Sqoop — это инструмент для передачи данных в реляционных базах данных и Hadoop друг в друга.Он может импортировать данные из реляционной базы данных (например, MySQL, Oracle) в Hadoop (например, HDFS, Hive, HBase) или импортировать данные из реляционной базы данных. (например, MySQL, Oracle) в Hadoop (например, HDFS, Hive, HBase).Данные в Hadoop (например, HDFS, Hive, HBase) импортируются в реляционные базы данных (например, MySQL, Oracle). Шаги установки следующие.

1. Скачать и разархивировать (1) Загрузите установочный пакет.

(2) Загрузите установочный пакет sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz на виртуальную машину.

(3) Разархивируйте установочный пакет Sqoop в указанный каталог.

[xxx@hadoop102 software]$ tar -zxf sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar. gz -C /opt/module/

(4) Переименован mv sqoop-1.4.6.bin_hadoop-2.0.4-alpha sqoop.

2. Изменить файл конфигурации

Файл конфигурации Sqoop аналогичен большинству фреймворков больших данных и находится в каталоге conf корневого каталога Sqoop.

(1) Переименуйте файл конфигурации.

[xxx@hadoop102 conf]$ mv sqoop-env-template.sh sqoop-env.sh

(2) Измените файл конфигурации sqoop-env.sh.

[xxx@hadoop102 conf]$ vim sqoop-env.sh

Добавьте следующий контент.

export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
export ZOOCFGDIR=/opt/module/zookeeper-3.4.10
export HIVE_HOME=/opt/module/hive
export HBASE_HOME=/opt/module/hbase

3. Скопируйте драйвер JDBC

Скопируйте драйвер JDBC в каталог lib Sqoop.

[xxx@hadoop102 mysql]$ cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop/lib/

4. Подтвердить Sqoop

Мы можем убедиться, что Sqoop настроен правильно, выполнив следующую команду.

[xxx@hadoop102 sqoop]$ bin/sqoop help

Появляется предупреждающее предупреждение (предупреждающее сообщение было опущено) вместе с выводом команды справки.

Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
import-mainframe Import datasets from a mainframe server to HDFS
job Work with saved jobs
list-databases List available databases on a server
list-tables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information

5. Проверьте, может ли Sqoop успешно подключиться к базе данных.

[xxx@hadoop102 sqoop]$ bin/sqoop list-databases --connect

jdbc:mysql://hadoop102:3306/ --username root --password 000000

Если появится следующий вывод, соединение установлено успешно.

information_schema
metastore
mysql
oozie
performance_schema

9. Установка улья

1. Установить и настроить Hive

(1) Загрузите установочный пакет Hive apache-hive-3.1.2-bin.tar.gz в каталог /opt/software Linux и распакуйте apache-hive-3.1.2-bin.tar.gz в /opt/ модуль/каталог.

[xxx@hadoop102 software]$ tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/

(2) Измените имя apache-hive-3.1.2-bin на hive.

[xxx@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive

(3) Измените файл /etc/profile.d/my_env.sh и добавьте переменные среды.

[программное обеспечение xxx@hadoop102]$ sudo vim /etc/profile.d/my_env.sh Добавьте следующее.

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin 

Выполните следующую команду, чтобы переменная среды вступила в силу.

[xxx@hadoop102 software]$ source /etc/profile.d/my_env.sh

(4) Перейдите в каталог /opt/module/hive/lib и выполните следующую команду, чтобы разрешить конфликт пакетов log jar.

[xxx@hadoop102 lib]$ mv log4j-slf4j-impl-2.10.0.jar

log4j-slf4j-impl-2.10.0.jar.bak

2. копия драйвера

(1) Распакуйте пакет драйвера mysql-connector-java-5.1.27.tar.gz в каталог /opt/software/mysql-libs.

[root@hadoop102 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz

(2) Скопируйте каталог /opt/software/mysql-libs/mysql-connector-java-5.1.27. mysql-connector-java-5.1.27-bin.jar в каталог /opt/module/hive/lib/ для подключения к MySQL при более позднем запуске Hive.

[root@hadoop102 mysql-connector-java-5.1.27]# cp mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib/

3. Настройте Metastore для MySQL

(1) Создайте файл hive-site.xml в каталоге /opt/module/hive/conf.

[xxx@hadoop102 conf]$ touch hive-site.xml

[xxx@hadoop102 conf]$ vim hive-site.xml

(2) В соответствии с параметрами конфигурации официальной документации скопируйте данные в файл hive-site.xml.

Из wiki.Apache.org/confluence/…

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--配置 Hive 保存元数据信息所需的 MySQL URL 地址,此处使用 Keepalived 服务对外提供的虚拟
IP 地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop100:3306/metastore?createDatabaseIfNotExist=true
</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--配置 Hive 连接 MySQL 的驱动全类名-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--配置 Hive 连接 MySQL 的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<!--配置 Hive 连接 MySQL 的密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>000000</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop102:9083</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop102</value>
</property>
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>

4. Инициализировать метабазу

(1) Запустите MySQL.

[xxx@hadoop103 mysql-libs]$ mysql -uroot -p000000

(2) Создайте новую базу метаданных Hive.

mysql> create database metastore;

mysql> quit;

(3) Инициализировать базу данных метаданных Hive.

[xxx@hadoop102 conf]$ schematool -initSchema -dbType mysql -verbose

5. Начать куст

(1) Для Hive 2.x и выше сначала должны быть запущены службы Metastore и Hiveserver2, иначе будет сообщено об ошибке.

FAILED: HiveException java.lang.RuntimeException: Unable to instantiate
org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

(2) Напишите сценарий запуска службы Hive в каталоге /opt/module/hive/bin и запустите службы Metastore и Hiveserver2 в сценарии.

[xxx@hadoop102 bin]$ vim hiveservices.sh

Содержание скрипта следующее.

#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs
mkdir -p $HIVE_LOG_DIR
#检查进程是否运行正常,参数 1 为进程名,参数 2 为进程端口
function check_process()
{
pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/'
-f 1)
echo $pid
[[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}
function hive_start()
{
metapid=$(check_process HiveMetastore 9083)
cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
cmd=$cmd" sleep 4; hdfs dfsadmin -safemode wait >/dev/null 2>&1"
[ -z "$metapid" ] && eval $cmd || echo "Metastroe 服务已启动"
server2pid=$(check_process HiveServer2 10000)
cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1
&"
[ -z "$server2pid" ] && eval $cmd || echo "HiveServer2 服务已启动"
}
function hive_stop()
{
metapid=$(check_process HiveMetastore 9083)
[ "$metapid" ] && kill $metapid || echo "Metastore 服务未启动"
server2pid=$(check_process HiveServer2 10000)
[ "$server2pid" ] && kill $server2pid || echo "HiveServer2 服务未启动"
}
case $1 in
"start")
hive_start
;;
"stop")
hive_stop
;;
"restart")
hive_stop
sleep 2
hive_start
;;
"status")
check_process HiveMetastore 9083 >/dev/null && echo "Metastore 服务运行正常"
|| echo "Metastore 服务运行异常"
check_process HiveServer2 10000 >/dev/null && echo "HiveServer2 服务运行正常
" || echo "HiveServer2 服务运行异常"
;;
*)
echo Invalid Args!
echo 'Usage: '$(basename $0)' start|stop|restart|status'
;;
esac

(3) Увеличьте полномочия на выполнение сценария.

[xxx@hadoop102 bin]$ chmod +x hiveservices.sh

(4) Запустите фоновую службу Hive.

[xxx@hadoop102 bin]$ hiveservices.sh start

(5) Просмотр рабочего состояния фоновых служб Hive.

[xxx@hadoop102 bin]$ hiveservices.sh status

Служба Metastore работает нормально

Служба HiveServer2 работает нормально

(6) Запустите клиент Hive.

[xxx@hadoop102 hive]$ bin/hive

10. Установите ES5.2

1) Загрузите elasticsearch-5.2.2.tar.gz в каталог /opt/software Hadoop102 и извлеките его в каталог /opt/module.

[xxx@hadoop102 software]$ tar -zxvf

elasticsearch-5.2.2.tar.gz -C /opt/module/

2) Измените файл конфигурации /opt/module/elasticsearch-5.2.2/config/elasticsearch.yml.

[xxx@hadoop102 config]$ vim elasticsearch.yml

network.host: hadoop102
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

3) Измените файл конфигурации системы Linux /etc/security/limits.conf.

[xxx@hadoop102 elasticsearch-5.2.2]$ sudo vim

/etc/security/limits.conf

#添加如下内容
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536

[xxx@hadoop102 elasticsearch-5.2.2]$ sudo vim /etc/sysctl.conf

#添加
vm.max_map_count=655360

[xxx@hadoop102 elasticsearch-5.2.2]$ sudo vim /etc/security/limits.d/90-nproc.conf

#修改配置
* soft nproc 2048

[xxx@hadoop102 elasticsearch-5.2.2]$ sudo sysctl -p

4) Необходимо перезапустить виртуальную машину [xxx@hadoop102 elasticsearch-5.2.2]$ su root root@hadoop102 elasticsearch-5.2.2]# перезагрузка

5) По пути /opt/module/elasticsearch-5.2.2 запустите ES

[xxx@hadoop102 elasticsearch-5.2.2]$ bin/elasticsearch

6) Создать индекс грифона в ES

[xxx@hadoop102 ~]$ curl -XPUT http://hadoop102:9200/griffin -d '
{
	"aliases": {},
	"mappings": {
		"accuracy": {
			"properties": {
				"name": {
					"fields": {
						"keyword": {
							"ignore_above": 256,
							"type": "keyword"
											}
									},
							"type": "text"
								},
						"tmst": {
						"type": "date"
									}
								}
							}
							},
				"settings": {
				"index": {
					"number_of_replicas": "2",
					"number_of_shards": "5"
							}
					}
			} '

11. Установите Spark2.4.3

1) Загрузите spark-2.4.3-bin-hadoop2.7.tgz в каталог /opt/software и распакуйте его в /opt/module.

[xxx@hadoop102 software]$ tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz -C /opt/module/

2) Измените имя /opt/module/spark-2.4.3-bin-hadoop2.7 на spark

[xxx@hadoop102 module]$ mv spark-2.4.3-bin-hadoop2.7/ spark

3) Измените имя /opt/module/spark/conf/spark-defaults.conf.template на spark-defaults.conf.

[xxx@hadoop102 conf]$ mv spark-defaults.conf.template spark-defaults.conf

4) Заранее создайте путь журнала spark_directory в кластере hadoop.

[xxx@hadoop102 spark]$ hadoop fs -mkdir /spark_directory

5) Настройте путь журнала Spark в файле spark-default.conf.

[xxx@hadoop102 conf]$ vim spark-defaults.conf

#添加如下配置
spark.eventLog.enabled true
spark.eventLog.dir
hdfs://hadoop102:9000/spark_directory

6) Измените имя /opt/module/spark/conf/spark-env.sh.template на spark-env.sh.

[xxx@hadoop102 conf]$ mv spark-env.sh.template spark-env.sh

7) В файле /opt/module/spark/conf/spark-env.sh укажите путь к файлу конфигурации YARN и настройте параметры, относящиеся к серверу истории.

[xxx@hadoop102 conf]$ vim spark-env.sh

#添加如下参数
YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080
-Dspark.history.retainedApplications=30
-Dspark.history.fs.logDirectory=hdfs://hadoop102:9000/spark_directory"

8) Скопируйте пакет /opt/module/hive-2.3.6/lib/datanucleus-*.jar из Hive в Spark. /opt/module/spark/jars путь

[xxx@hadoop102 lib]$ cp /opt/module/hive-2.3.6/lib/datanucleus-*.jar /opt/module/spark/jars/

9) Скопируйте пакет /opt/module/hive-2.3.6/conf/hive-site.xml из Hive в Spark.

/opt/module/spark/conf путь

[xxx@hadoop102 conf]$ cp /opt/module/hive-2.3.6/conf/hive-site.xml /opt/module/spark/conf/

10) Тестовая среда [xxx@hadoop102 spark]$ bin/spark-shell

scala>spark.sql("show databases").show

12. Установите Ливи

1) Загрузите livy-server-0.3.0.zip в каталог /opt/software Hadoop102 и распакуйте его в /opt/module.

[xxx@hadoop102 software]$ unzip livy-server-0.3.0.zip -d /opt/module/

2) Измените имя файла /opt/module/livy-server-0.3.0 на livy

[xxx@hadoop102 module]$ mv livy-server-0.3.0/ livy

3) Измените файл /opt/module/livy/conf/livy.conf, чтобы настроить параметры, связанные с livy и spark.

livy.server.host = Hadoop102
livy.spark.master =yarn
livy.spark.deployMode = client
livy.repl.enableHiveContext = true
livy.server.port = 8998

4) Настройте необходимые переменные среды

[xxx@hadoop102 conf]$ sudo vim /etc/profile

#SPARK_HOME
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin

[xxx@hadoop102 conf]$ source /etc/profile

5) По пути /opt/module/livy/ запустите службу livy.

[xxx@hadoop102 livy]$ bin/livy-server start

13. Мавен

1) Загрузка Maven:maven.apache.org/download.success...

2) Загрузите apache-maven-3.6.1-bin.tar.gz в каталог /opt/software Linux.

3) Разархивируйте apache-maven-3.6.1-bin.tar.gz в каталог /opt/module/

[xxx@hadoop102 software]$ tar -zxvf apache-maven-3.6.1-bin.tar.gz -C /opt/module/

4) Измените имя apache-maven-3.6.1 на maven.

[xxx@hadoop102 module]$ mv apache-maven-3.6.1/ maven

5) Добавьте переменные окружения в /etc/profile

[xxx@hadoop102 module]$ sudo vim /etc/profile

#MAVEN_HOME
export MAVEN_HOME=/opt/module/maven
export PATH=$PATH:$MAVEN_HOME/bin

6) Проверьте результат установки

[xxx@hadoop102 module]$ source /etc/profile

[xxx@hadoop102 module]$ mvn -v

7) Измените settings.xml и укажите его как Alibaba Cloud.

[xxx@hadoop102 maven]$ cd conf

[xxx@hadoop102 maven]$ vim settings.xml

<!-- 添加阿里云镜像-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</ur
l>
</mirror>
<mirror>
<id>UK</id>
<name>UK Central</name>
<url>http://uk.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>

8) Создайте папку .m2 в каталоге /home/xxx

[xxx@hadoop102

14. Компиляция Apache Griffin

1) Загрузите griffin-master.zip в каталог /opt/software Hadoop102 и извлеките пакет tar.gz в /opt/module.

[xxx@hadoop102 software]$ unzip griffin-master.zip -d /opt/module/

2) Измените файл /opt/module/griffin-master/service/pom.xml, аннотируйте org.postgresql и добавьте зависимости mysql.

[xxx@hadoop102 service]$ vim pom.xml

<!--
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
注意:版本号删除掉

Остальные этапы компиляции griffin см.эта статья