工作场景的需要,最近开始学习起了大数据相关的东西。对于我这个初学者,大数据入门就是首先得学会Hadoop环境的安装,按照步骤如遇相关问题,请指正。
Hadoop环境的安装,我是用自己电脑借助VMware workstation构建了三个虚拟机节点,进行安装的。
准备三个虚拟机节点,我分配的资源是2核2G内存50G硬盘资源
每个虚拟机节点,保证
三台虚拟机必须保证内网互通(关闭每台虚拟机防火墙)
[root@liuzz-template ~]# systemctl stop firewalld
[root@liuzz-template ~]# systemctl disable firewalld.service
每台虚拟机设置好静态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
先在hadoop1上进行以下操作:
我的是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
core-site.xml
fs.defaultFS
hdfs://hadoop1:8020
hadoop.tmp.dir
/usr/local/software/hadoop-3.2.4/data/tmp
hdfs-site.xml
dfs.namenode.http-address
hadoop1:9870
dfs.namenode.secondary.http-address
hadoop3:9868
yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop2
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
yarn.log-aggregation-enable
true
yarn.log.server.url
http://hadoop102:19888/jobhistory/logs
yarn.log-aggregation.retain-seconds
604800
mapred-site.xml
mapreduce.framework.name
yarn
注意,若要重新执行这个(重置平台),必须先删除目录下 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格式,中文乱码注释需要去掉!
[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
[root@liuzz-hadoop1 hadoop-3.2.4]# sbin/start-yarn.sh
遇到的坑: 执行出现权限问题:没有将当前服务器与其他两台免密ssh
[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