Создайте кластер Hadoop без фундамента

Hadoop

1. Настройте сеть виртуальной машины (режим NAT)

Скриншот ipconfig хоста:


Конфигурация сети Vmnet8:


Конфигурация сети виртуальной машины:




2. Настройте среду с одним узлом

2.1 Загрузить файлы в CentOS и настроить среды Java и Hadoop

Загрузите инсталляционный пакет на сервер:


После успешной загрузки вы увидите два сжатых пакета:


Разархивируйте два архива:


Переименуйте файл, чтобы позже настроить переменные среды:


Настройте переменные среды jdk+hadoop:


Проверьте, успешно ли настроена переменная среды jdk:


Проверьте, успешно ли настроены переменные среды hadoop:


---------------------------------------------------------------------------------------

На данный момент установлены JDK и Hadoop, а затем изменены некоторые файлы конфигурации.

2.2 Изменить имя хоста CentOS

Имя хоста по умолчанию:


Просмотр и изменение имен хостов:



Постоянно измените имя хоста, измените файл конфигурации и выполните команду: vi /etc/sysconfig/network:



2.3 Привязать имя хоста и IP

Привязать имя хоста и ip, выполнить команду: vi /etc/hosts


2.4 Отключите брандмауэр


2.5 Структура каталогов Hadoop

1. Просмотрите структуру каталогов Hadoop и выполните команду: ll


2. Важный каталог

(1) каталог bin: содержит сценарии для работы служб, связанных с Hadoop (HDFS, YARN).

(2) каталог etc: каталог файлов конфигурации Hadoop, в котором хранятся файлы конфигурации Hadoop.

(3) каталог lib: хранить собственную библиотеку Hadoop (сжимать и распаковывать данные)

(4) каталог sbin: содержит сценарии для запуска или остановки служб, связанных с Hadoop.

(5) общий каталог: хранить зависимые от Hadoop пакеты jar, документы и официальные дела


Три, Hadoop три режима работы

Режимы работы Hadoop включают в себя: локальный режим, псевдораспределенный режим и полностью распределенный режим.

Официальный сайт Hadoop:hadoop.apache.org/

Режим 1: Локальный режим работы

Официальный кейс Grep


1. Создайте входную папку в файле hadoop2.8.5.

[root@node hadoop2.8.5]$ mkdir input

2. Скопируйте XML-файл конфигурации Hadoop для ввода

[root@node hadoop2.8.5]$ cp etc/hadoop/*.xml input

3. Запустите программу MapReduce в общем каталоге.

[root@node hadoop2.8.5]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jargrep input output 'dfs[a-z.]+'

4. Просмотрите результат вывода

[root@node hadoop2.8.5]$ cat output/*

Результаты консоли показывают:




Официальный кейс WordCount

1. Создайте папку wcinput в файле hadoop2.8.5.

[root@node hadoop2.8.5]$ mkdir wcinput

2. Создайте файл wc.input в файле wcinput.

[root@node hadoop2.8.5]$ cd wcinput
[root@node hadoop2.8.5]$ touch wc.input

3. Отредактируйте файл wc.input

[root@node hadoop2.8.5]$ vi wc.input

Введите в файл следующее

hadoop 

hadoop 

mapreduce

yarn

сохранить и выйти::wq

4. Вернитесь в каталог Hadoop /opt/module/hadoop2.8.5.

5. Запустите программу

[root@node hadoop2.8.5]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount wcinput wcoutput

6. Просмотрите результаты

[root@node hadoop2.8.5]$ cat wcoutput/part-r-00000

hadoop 2

mapreduce 1

yarn 1

Результаты дела показывают:





Режим 2: псевдораспределенный режим работы

Запустите HDFS и запустите программу MapReduce.

1. Настройте кластер

(1) Конфигурация: hadoop-env.sh

        export JAVA_HOME=/usr/java/jdk1.8/

(2) Конфигурация: core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://node:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
   <name>hadoop.tmp.dir</name>
   <value>/usr/java/hadoop2.8.5/data/tmp</value>
</property>

(3) Конфигурация: hdfs-site.xml

<!-- 指定HDFS副本的数量 -->
<property>
   <name>dfs.replication</name>
   <value>3</value>
</property>


2. Запустите кластер

(1) Отформатируйте NameNode (отформатируйте его при первом запуске, не всегда форматируйте его позже)

[root@node hadoop2.8.5]$ hdfs namenode -format


(2) Запустить NameNode

[root@node hadoop2.8.5]$ hadoop-daemon.sh start namenode


(3) Запустить узел данных

[root@node hadoop2.8.5]$ hadoop-daemon.sh
start datanode



3. Просмотр кластера

(1) Чтобы проверить, успешен ли запуск, выполните команду jps

Примечание: jps — это команда JDK, а не Linux. Невозможно использовать jps без установки JDK

(2) Просмотр файловой системы HDFS на веб-сайте

http://node:50070

Примечание. Чтобы получить доступ через URL-адрес в среде Windows, вам необходимо добавить узел 192.168.158.128 в C:\Windows\System32\drivers\etc\hosts.


(3) Просмотр созданного журнала журнала


Просмотр журналов локально:


Просмотр журнала на веб-странице:


(4) Размышление: почему нельзя все время форматировать NameNode, форматировать NameNode, на что следует обратить внимание?

[root@node hadoop2.8.5]$ cd data/tmp/dfs/name/current/
[root@node hadoop2.8.5]$ cat VERSION

clusterID=clusterID=CID-1e77ad8f-5b3f-4647-a13a-4ea3f01b6d65

[root@node hadoop2.8.5]$ cd data/tmp/dfs/data/current/

clusterID=clusterID=CID-1e77ad8f-5b3f-4647-a13a-4ea3f01b6d65

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


4. Работа с кластером

(1) В файловой системе HDFSСоздайтевходная папка

Выполните команду: hdfs dfs -mkdir -p /usr/java/hadoop/input




(2) Содержимое локального тестового файлазагрузитьк файловой системе

Выполните команду: hdfs dfs -put wcinput/wc.input /user/java/hadoop/input/




(3)ПроверитьЗагруженный файл правильный?

Выполните команду: hdfs dfs -cat /usr/java/hadoop/input/wc.input



(4)бегатьПрограмма MapReduce

Выполните команду: hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /usr/java/hadoop/input/ /usr/java/hadoop/output



(5)Проверитьвыходной результат

Выполните команду: hdfs dfs -cat /usr/java/hadoop/output/*





(6) Проверьте содержимое файласкачатьк местному

Выполните команду: hdfs dfs -get /usr/java/hadoop/output/part-r-00000 wcoutput/



(7)удалятьвыходной результат

Выполните команду: hdfs dfs -rm -f /usr/java/hadoop/output




Запустите YARN и запустите программу MapReduce.

1. Настройте кластер

(1) Настройте пряжу-env.sh


(2) Настройте yarn-site.xml

<!-- Reducer获取数据的方式-->
<property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
</property>
 
<!-- 指定YARN的ResourceManager的地址-->
<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>node</value>
</property>



(3) Конфигурация: mapred-env.sh



(4) Конфигурация: (переименовать mapred-site.xml.template в) mapred-site.xml

<!-- 指定MR运行在YARN上 -->
<property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
</property>



2. Запустите кластер

(1) Перед запуском необходимо убедиться, что NameNode и DataNode запущены.

(2) Запустите диспетчер ресурсов

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

(3) Запустите диспетчер узлов

Выполните команду: yarn-daemon.sh Старт odemanager



3. Кластерная операция

(1) Просмотрите страницу браузера YARN, как показано на рис. 2-35.

http://node:8088/cluster


(2) Удалить выходной файл в файловой системе

Выполните команду: hdfs dfs -rm -f /usr/java/hadoop/output

(3) Запустите программу MapReduce.

Выполните команду: hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /usr/java/hadoop/input/ /usr/java/hadoop/output






  (2)  vi /etc/sysconfig/network


  (3)  vi /etc/hosts



node

node1

node2

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

<!-- 指定HDFS中NameNode的地址-->
<property>
     <name>fs.defaultFS</name> 
     <value>hdfs://node:9000</value>
</property>
 
<!-- 指定Hadoop运行时产生文件的存储目录-->
<property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/java/hadoop2.8.5/data/tmp</value>
</property>


export JAVA_HOME=/usr/java/jdk1.8/

<property>
     <name>dfs.replication</name>
     <value>3</value>
</property>
 
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>node2:50090</value>
</property>




export JAVA_HOME=/usr/java/jdk1.8/

<!-- Reducer获取数据的方式-->
<property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
</property>
 
<!-- 指定YARN的ResourceManager的地址-->
<property>
     <name>yarn.resourcemanager.hostname</name>
     <value>node1</value>
</property>




export JAVA_HOME=/usr/java/jdk1.8/

<!-- 指定MR运行在Yarn上-->
<property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
</property>


















[node] jps 



[node1] jps



[node2] jps



start-dfs.sh / stop-dfs.sh

start-yarn.sh / stop-yarn.sh

start-all.sh / stop-all.sh