前言
这几天安装Hadoop2.9.2,参考了很多网上的博客,但是自己有不少地方没看懂,然后掉进了不少坑。所以整理了一下安装的步骤,以后再搭建的时候可以回来看看,也希望给其它小伙伴在搭建环境的时候可以更加高效快速。如果有做的不对的地方,请大家指出。还有,文章的最后有些安装过程中遇到的尚未解决的问题,希望大家可以帮忙解决一下。😃😃😃
还有,我为了偷懒,下面全部操作都是以root用户操作,如果你想使用其他用户,要先在第五步拍摄快照之前创建一个用户,比如 useradd hadoop。然后在搭建完全分布式的ssh免密登录slave时,是使用你创建的用户进行免密操作,之后的操作都是在你创建的用户上进行。
目录
1. 固定IP
- 点击虚拟机的 编辑——虚拟网络编辑器
- 点击 VMnet8 那一栏,点击 NAT设置
- 记住子网掩码和网关IP
- 输入 vim /etc/sysconfig/network-scripts/ifcfg-ens33,修改红框部分,注意IPADDR与子网的网段要一致
- 输入 systemctl restart network
- 输入 ifconfig 查看,ping 外网
2. IP和主机名映射
- 输入 hostname 查看主机名
- 输入 vim /etc/sysconfig/network 修改主机映射文件
- 输入 ifconfig 查看IP
- 输入 vim /etc/hosts 增加IP和主机名的映射
3. 关闭防火墙和Selinux
- 输入 systemctl status firewalld.service 查看防火墙状态
- 输入 systemctl stop firewalld.service 关闭防火墙
- 输入 systemctl disable firewalld.service 关闭防火墙自启
- 输入 vim /etc/sysconfig/selinux,将 SELINUX=enforcing 改为 SELINUX=disabled
4. 安装JDK
- 将JDK安装包放在 /opt 目录下,
输入 tar -zxvf jdk-8u241-linux-x64.tar.gz,解压完毕有 jdk1.8.0_241 文件夹。 - 输入 vim /etc/profile,添加下面的环境变量
- 输入 source /etc/profile
- 输入 java -version 检验
5. 拍摄快照
拍摄快照(后面搭建完全分布式模式需要用)(注意虚拟机要处于关机状态拍摄的快照才能克隆)
6. 安装Hadoop
- 进入Hadoop安装包所在目录,输入 tar -zxvf hadoop-2.9.2.tar.gz -C /opt,解压完毕有 hadoop-2.9.2 文件夹。
- 输入 vim /etc/profile,添加下面的环境变量
- 输入 source /etc/profile
- 输入 hadoop version 检验
7. 单机模式
完成上面的操作,Hadoop就处于单机模式,可以按官方给定的例子测试(该步骤可以省略)。
例子1:
将 $HADOOP_HOME/etc/hadoop 目录下的所有xml文件复制到input文件夹,查找文件内dfs开头的字符串,将结果放到output文件夹(output文件夹不可以预先创建,如果存在会报FileAlreadyExistsException)
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output 'dfs[a-z.]+'
cat output/*
例子2:
创建一个文件夹,mkdir wcinput。
在文件夹内写一个文件,vim wc.input
touch touch
window window
sun sun sun sun sun
phone
hadoop hadoop hadoop
进入wcinput文件夹,输入 hadoop jar /opt/hadoop-2.9.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount . wcoutput
查看生成的文件 cat wcoutput/part-r-00000
hadoop 3
phone 1
sun 5
touch 2
window 2
8. 伪分布式模式
启动HDFS
- 输入 vim etc/hadoop/hadoop-env.sh,修改 JAVA_HOME 变量,将其改为Java的安装目录($HADOOP_HOME/etc/hadoop/下)
- 配置 core-site.xml($HADOOP_HOME/etc/hadoop/下)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.9.2/data/tmp</value>
</property>
</configuration>
- 配置 hdfs-site.xml($HADOOP_HOME/etc/hadoop/下)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<!-- replication 是数据副本数量,默认为3-->
</property>
</configuration>
- 进入Hadoop安装目录,输入 bin/hdfs namenode -format,格式化NameNode。(第一次格式化时不会出现问题,以后如果格式化出现提示是否重新格式化,则可能有数据未清理,则需要清理后再格式化)(格式化NameNode会产生新的集群ID,导致NameNode和DataNode的集群ID不一致,NameNode和DataNode之间不能通信,集群找不到以前的数据。所以,格式化NameNode时要先删除data数据和log日志(上面自己配置的存储数据的路径)再格式化)(下面是格式化开始和结束的样子)
- 输入