前言

        工作场景的需要,最近开始学习起了大数据相关的东西。对于我这个初学者,大数据入门就是首先得学会Hadoop环境的安装,按照步骤如遇相关问题,请指正。

        Hadoop环境的安装,我是用自己电脑借助VMware workstation构建了三个虚拟机节点,进行安装的。

准备阶段

准备三个虚拟机节点,我分配的资源是2核2G内存50G硬盘资源

每个虚拟机节点,保证

1.关闭三台虚拟机防火墙

三台虚拟机必须保证内网互通(关闭每台虚拟机防火墙)

[root@liuzz-template ~]# systemctl stop firewalld
[root@liuzz-template ~]# systemctl disable firewalld.service

2.分别设置设置好各自静态ip,以及对应代表的hostname

每台虚拟机设置好静态ip,不要设置动态ip,否则下次重启之后ip变了互相就无法通讯

# 服务改名字
[root@hadoop1]#vim /etc/hostname
your server name

#修改静态ip配置
[root@liuzz-hadoop1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="static"  #必要
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="cf82b270-3567-4516-97d1-a45d73fc3fec" #注意,此处要唯一
DEVICE="ens33"
ONBOOT="yes"

# 自定义ip,gateway,dns1
IPADDR=192.168.27.129
GATEWAY=192.168.27.2
DNS1=192.168.27.2

我对应的每个虚拟机节点hosts配置如下

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.27.129 hadoop1
192.168.27.139 hadoop2
192.168.27.149 hadoop3

3.其他软件环境必须具备(如java环境)

4.设置三台虚拟机免密传输配置

配置安装及启动

1.hadoop部署规划

 

2.下载并安装配置hadoop配置

先在hadoop1上进行以下操作:

下载hadoop包,解压到指定目录

我的是hadoop-3.2.4版本,安装目录是/usr/local/software/apache-hive-3.1.2/

配置环境变量

[root@liuzz-hadoop1 apache-hive-3.1.2]# vim /etc/profile
# JAVA
export JAVA_HOME=/usr/local/java/jdk1.8.0_333
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
# Hadoop
export HADOOP_HOME=/usr/local/software/hadoop-3.2.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

[root@liuzz-hadoop1 apache-hive-3.1.2]# source /etc/profile

到hadoop包目录下,配置对应的几个配置

core-site.xml

<configuration>
<!-- 指定HDFS中NameNode的地址-->
<property>
     <name>fs.defaultFS</name> 
     <value>hdfs://hadoop1:8020</value>
</property>
 
<!-- 指定Hadoop运行时产生文件的存储目录-->
<property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/software/hadoop-3.2.4/data/tmp</value>
</property>

</configuration>

hdfs-site.xml

<configuration>
<!-- nn web前端页面 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:9870</value>
</property>

<!-- 2nn web前端页面 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:9868</value>
</property>
   
</configuration>

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<!--指定MR走shuffle -->
<property>  
<name>yarn.nodemanager.aux-services</name> 
<value>mapreduce_shuffle</value> 
</property>

<!--指定resourcemanager地址 --> 
<property>  
<name>yarn.resourcemanager.hostname</name> 
<value>hadoop2</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>

 <!-- 开启日志聚集功能 -->
<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

<configuration>

<!-- 指定MapReduce程序运行在yarn上 -->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
 

</configuration>

同步上述配置到hadoop2、hadoop3上!

3.启动hadoop相关组件

a. hadoop1上初始化配置

注意,若要重新执行这个(重置平台),必须先删除目录下 data/logs/这两个再执行初始化配置!!!

[root@liuzz-hadoop1 hadoop]# hdfs namenode -format

遇到的坑:com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 start byte 0xb6 (at char #726, byte #37)

所有配置文件都是unix格式,中文乱码注释需要去掉!

b.hadoop1上启动namenode

[root@liuzz-hadoop1 hadoop-3.2.4]# sbin/start-dfs.sh

遇到的坑:

a. hadoop启动失败:hadoop-functions.sh:行398: 未预期的符号 `<‘ 附近有语法错误

解决:使用 ./sbin/start-dfs.sh 启动

b.hadoop启动报错:Attempting to operate on hdfs namenode as root

解决:环境变量添加如下变量 (解决统一启动hadoop集群这类问题)

export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

c. 找不到JAVA_HOME

解决:在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 添加 export JAVA_HOME=你的JAVA_HOME

c.hadoop2上启动ResourceManager

[root@liuzz-hadoop1 hadoop-3.2.4]# sbin/start-yarn.sh

遇到的坑: 执行出现权限问题:没有将当前服务器与其他两台免密ssh

d.4.hadoop1上启动历史服务器(没用spark的情况下)

[root@liuzz-hadoop1 hadoop-3.2.4]# ./bin/mapred --daemon start historyserver

验证

hdfs web端访问地址:http://hadoop1:9870/

yarn web端访问地址:http://hadoop2:8088/ 

1. 验证hdfs是否能操作文件

[root@liuzz-hadoop1 hadoop-3.2.4]# hadoop fs -ls /

2. 验证yarn是否能资源调配并使用mapreduce计算

[root@liuzz-hadoop1 hadoop-3.2.4]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar wordcount /wcinput /wcoutput

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐