大数据Hadoop环境安装
工作场景的需要,最近开始学习起了大数据相关的东西。对于我这个初学者,大数据入门就是首先得学会Hadoop环境的安装,按照步骤如遇相关问题,请指正。Hadoop环境的安装,我是用自己电脑借助VMware workstation构建了三个虚拟机节点,进行安装的。
前言
工作场景的需要,最近开始学习起了大数据相关的东西。对于我这个初学者,大数据入门就是首先得学会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
更多推荐
所有评论(0)