Diretório de artigos
Preparação
Três máquinas virtuais, configure java e descompacte hadoop-3.1.3 para o diretório especificado das três máquinas virtuais
hadoop102,hadoop103,hadoop104
Planejamento de implantação de cluster
Observação: Não instale NameNode e SecondaryNameNode no mesmo servidor
Observação: ResourceManager também consome memória, portanto, não o configure na mesma máquina que NameNode e SecondaryNameNode.
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
FIO | NodeManager | ResourceManager NodeManager | NodeManager |
Descrição dos números de porta comuns
demônio | Aplicativo | Hadoop2GenericName | Hadoop3Name |
---|---|---|---|
Porta NameNode | Hadoop HDFS NameNode | 8020 / 9000 | 9820 |
Hadoop HDFS NameNode HTTP UI | 50070 | 9870 | |
Nome SecundárioNodePorta | Nó de Nome Secundário | 50091 | 9869 |
Interface de usuário HTTP do NameNode secundário | 50090 | 9868 | |
Porta DataNode | Hadoop HDFS DataNode IPC | 50020 | 9867 |
Hadoop HDFS DataNode | 50010 | 9866 | |
Interface do usuário HTTP DataNode do Hadoop HDFS | 50075 | 9864 |
Configuração de login sem senha SSH
ssh-keygen -t rsa
Acerte três retornos de carro
ssh-copy-id hadoop102
ssh-copy-id hadoop102
ssh-copy-id hadoop102
Os três hosts se conectam
ssh hadoop10x
Configurar variáveis de ambiente
[xwk@hadoop102 ~]$ cd /etc/profile.d/
[xwk@hadoop102 profile.d]$ vim my_env.sh
#java
export JAVA_HOME=/opt/software/jdk
export PATH=$PATH:$JAVA_HOME/bin
#hadoop
export HADOOP_HOME=/opt/software/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[xwk@hadoop102 profile.d]$ source /etc/profile
Dê privilégios de root xwk ao usuário normal
Meu nome de usuário é xwk, você define de acordo com seu próprio nome de usuário
sudo vim /etc/sudoers
找到这行,在root那行下面插入xwk那行
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xwk ALL=(ALL) NOPASSWD:ALL
Forçar salvar e sair:wq!
Configurar o cluster
[xwk@hadoop102 profile.d]$ cd /opt/software/hadoop-3.1.3/etc/hadoop/
core-site.xml
Altere xwk para seu próprio nome de usuário. E mude o caminho do arquivo para o seu próprio
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为xwk -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>xwk</value>
</property>
<!-- 配置该xwk(superUser)允许通过代理访问的主机节点 -->
<property>
<name>hadoop.proxyuser.xwk.hosts</name>
<value>*</value>
</property>
<!-- 配置该xwk(superUser)允许通过代理用户所属组 -->
<property>
<name>hadoop.proxyuser.xwk.groups</name>
<value>*</value>
</property>
<!-- 配置该xwk(superUser)允许通过代理的用户-->
<property>
<name>hadoop.proxyuser.xwk.groups</name>
<value>*</value>
</property>
<!--支持LZO压缩 -->
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>
fio-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- yarn容器允许分配的最大最小内存 -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
</configuration>
configurar trabalhadores
vim /hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
Copie o diretório hadoop para o mesmo diretório em outros hosts
formatar
Se o cluster for iniciado pela primeira vez, será necessário formatar o NameNode no nó hadoop102 (observe que a formatação do NameNode gerará um novo ID de cluster, resultando em IDs de cluster inconsistentes entre NameNode e DataNode, e o cluster não pode encontrar passado dados. Se o cluster estiver em execução Se um erro for relatado e o NameNode precisar ser reformatado, os processos namenode e datanode deverão ser interrompidos primeiro e os diretórios de dados e logs de todas as máquinas deverão ser excluídos antes da formatação.)
hdfs namenode -format
comece
Iniciar HDFS (hadoop102) acima
cd /opt/software/hadoop-3.1.3/sbin/
./start-dfs.sh
Inicie o YARN (hadoop103) acima
sbin/start-yarn.sh
Entre no navegador NameNode do HDFS no lado da web :http://hadoop102:9870
Visualize o navegador ResourceManager do YARN
no lado da web e digite:http://hadoop103:8088