前言
本次hadoop完全是分布集群环境搭建用到了3台centos7的主机(全是真机,不是虚拟机,3台主机全部重装,网段的话是XX.XX.XX.190——XX.XX.XX.192,总共3个ip地址,后续如果有需要可以手动添加)。先配置好master主机,再用ssh连接到其他2个slave主机,分发配置文件,修改各自参数,这样速度比较快。本人在配置的时候没有新建用户,所有配置均在root用户下进行。
环境搭建
主机配置
修改/etc/hosts
:将所有主机名以及对应IP记录在里面
// 存放ip以及主机名
XX.XX.XX.190 master
XX.XX.XX.191 slave01
XX.XX.XX.192 slave02
修改/etc/hostname
:将自己的主机名记录在里面
// 存放自己的主机名
master
jdk配置
centos7中是自带jdk环境的,但是我建议直接全部卸载重装,我用的jdk以及hadoop的环境全部是最新的
java -version//查看jdk版本信息
rpm -qa | grep java// 查看已经安装的jdk版本,应该会出现7条信息,删除其中四条,保留剩下的以.noarch为后缀的文件
去官网下载最新的jdk-15.0.1
链接(https://www.oracle.com/java/technologies/javase-jdk15-downloads.html)
下载后我是安装在/opt/java/jdk-15.0.1
然后在/etc/profile配置环境变量,再source /etc/profile使得配置生效
#java environment
export JAVA_HOME=/opt/java/jdk-15.0.1
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
java -version
查看配置是否成功
但是如果就这么配置的话重启电脑之后还需执行source /etc/profile才行
解决方法,在bashrc文件中配置环境变量,使它永久生效
vi ~/.bashrc
结束后别忘了使配置生效source ~/.bashrc
export JAVA_HOME=/opt/java/jdk-15.0.1
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
hadoop安装配置
首先下载安装包,我觉得centos7里面下载太慢了,直接自己win10的电脑在官网下了hadoop-3.3.0最新版本的
链接(http://archive.apache.org/dist/hadoop/core/)
下载后随便拖到centos7里面一个文件夹下,然后我的路径是usr/hadoop/hadoop-3.3-0
这是一个目录结构
在hadoop中建立hdfs文件夹,hdfs文件夹中创建data,name,tmp三个文件夹。
之后就是配置/etc/profile
export PATH=$PATH:${JAVA_HOME}/bin
export HADOOP_HOME=/usr/hadoop/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
检查是否安装成功:hadoop version
接下来就是配置各种文件
首先添加java路径,在hadoop-3.3.0安装目录下的/etc/hadoop/hadoop-env.sh
和/etc/hadoop/yarn-env.sh
中添加一条java路径,不然hadoop环境无法正常启动
export JAVA_HOME=/opt/java/jdk-15.0.1
配置hadoop-3.3.0安装目录下的/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>false</value>
</property>
</configuration>
配置hadoop-3.3.0安装目录下的/etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hdfs/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
配置hadoop-3.3.0安装目录下的/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置hadoop-3.3.0安装目录下的/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
在hadoop-3.3.0安装目录下的/etc/hadoop/slaves
文件中写入所有的节点的名字
配置ssh
所有节点jdk安装和环境配置以及hadoop环境自己重新配置
ssh配置:
每台机器执行
ssh-keygen -t rsa
master上:
cat id_rsa.pub >> authorized_keys
公钥发送:
scp authorized_keys root@slave01:~/.ssh/
scp authorized_keys root@slave02:~/.ssh/
确保每一台机器的公钥文件里面有所有机器的公钥
再把整个hadoop文件发送到各个节点上对应的目录
启动所有服务并查看
在hadoop/hadoop-3.3.0/bin目录下执行
./hdfs namenode -format
格式化HDFS文件
然后启动
在节点上也是同样方法登录
可能在启动时遇到如下问题
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [master]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
在start-dfs.sh
和stop-dfs.sh
中添加代码:
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh
和stop-yarn.sh
中添加代码:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
这样就能解决问题了
在网页中显示你的hadoop集群环境
首先查看自己的端口号:
netstat -nplt
http://你的ip:端口号
就可以在网页上查看你的hadoop集群环境了(写这篇文章时我就开了master那台主机)
有问题也请批评指正!