CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)

it2023-04-03  78

Hadoop安装教程

1、准备工作

1.1 安装三台CentOS7虚拟机

hadoop-1是namenode,hadoop-2和hadoop-3都是datanode 使用:ip addr查看并记住三台虚拟机所对应IP

1.2 修改主机名(root 权限 操作三台)

[root@localhost ~]# hostname #查看当前的 hostnmae localhost [root@localhost ~]# hostnamectl set-hostname hadoop-1 #永久修改hostname(立即生效) [root@localhost ~]# hostname # 检查修改 hadoop-1

其余两台以同样方式分别将主机名修改为:hadoop-2、hadoop-3

1.3 修改HOSTS(root权限 操作三台)

修改HOSTS的原因主要有两点:

1.Hadoop 内部机制需要通过主机名对主机进行访问。 2.使用主机名对 Hadoop 集群进行配置,看起来更加一目了然。

在CentOS7中修改HOSTS 操作命令如下:

[root@localhost ~]# vi /etc/hosts #在文件中添加集群所有主机的IP和主机名的对应关系,IP 与主机名之间使用一个 TAB 键分隔 192.168.80.132 hadoop-1 192.168.80.133 hadoop-2 192.168.80.134 hadoop-3

1.4 关闭防火墙(root权限 操作三台)

Centos7 中使用 systemctl 命令来管理服务,命令如下:

[root@localhost ~]# firewall-cmd --state #查看状态 [root@localhost ~]# systemctl disable firewalld # 永久关闭防火墙(重启生效) [root@localhost ~]# systemctl stop firewalld # 临时关闭防火墙(立即生效)

1.5 同步时间(root权限 操作三台)

CentOS7 网络同步时间命令如下:

yum install ntpdate #安装过程中,需要按提示输入两次Y或yes ntpdate cn.pool.ntp.org #安装完毕后,执行该语句同步时间

1.6 配置SSH免密登录(root权限 操作三台)

给三台虚拟机生成密钥

以hadoop-1为例,执行命令,生成空字符串的秘钥(后面要使用公钥),命令是:

ssh-keygen -t rsa #安装过程中需要按四次Enter键

将公钥拷贝到要免密登录的目标机器上

在hadoop-1上执行以下命令:

ssh-copy-id hadoop-2 ssh-copy-id hadoop-3

在hadoop-2上执行以下命令:

ssh-copy-id hadoop-1 ssh-copy-id hadoop-3

在hadoop-3上执行以下命令:

ssh-copy-id hadoop-1 ssh-copy-id hadoop-2

测试免密登陆

在hadoop-2服务器执行命令

ssh hadoop-1

可以看到在没有输入密码的情况下从服务器hadoop-2成功登录到hadoop-1服务器,此时就可以在hadoop-2服务器操作hadoop-1服务器。三台机器互相ssh一下,第一次登录需要输入yes,之后就不需要了。出现上图表示成功。测试能连接后不要忘记执行 exit 退出登录

2、JDK环境安装(操作三台)

2.1 下载JDK

下载网址:JDK下载网址 选择图中红框版本

2.2 将JDK文件上传到Linux服务器上

这里使用root账号登录,安装到/usr/local/java目录下。上传及新建文件夹推荐使用XShell+Xftp

2.2 执行解压命令

cd /usr/local/java/ tar -zxvf jdk-8u261-linux-x64.tar.gz

2.3 配置环境变量

vi /etc/profile

在末尾加上:

JAVA_HOME=/usr/local/java/jdk1.8.0_261(这里 JAVA_HOME=你自己的jdk路径) CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH

然后执行 source /etc/profile 命令使修改的配置文件生效。

2.4 测试

执行命令:

javac或者java -version

出现下图代表JDK安装成功

3、Hadoop安装

3.1 Hadoop下载

这里选择的版本是3.2.0 Hadoop3.2.0下载

3.2 将Hadoop文件上传到Linux服务器上

在opt目录下新建一个名为hadoop的目录,并将下载得到的hadoop-3.2.0.tar上载到该目录下

3.2 解压安装

tar -xvf hadoop-3.2.0.tar.gz

3.3 配置Hadoop环境变量

vi /etc/profile

在末尾加上:

export HADOOP_HOME=/opt/hadoop/hadoop-3.2.0 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin

然后执行 source /etc/profile 命令使修改的配置文件生效。

3.4 测试

执行命令:

hadoop version

4、Hadoop配置文件修改

4.1 新建几个目录

在/root目录下新建几个目录,以此复制粘贴执行下面的命令:

mkdir /root/hadoop mkdir /root/hadoop/tmp mkdir /root/hadoop/var mkdir /root/hadoop/dfs mkdir /root/hadoop/dfs/name mkdir /root/hadoop/dfs/data

4.2 修改etc/hadoop中的一系列配置文件

修改core-site.xm
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml

在节点内加入配置:

<property> <name>hadoop.tmp.dir</name> <value>/root/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://hadoop-1:9000</value> </property>
修改hadoop-env.sh
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh 将 export JAVA_HOME=${JAVA_HOME} 修改为: export JAVA_HOME=/usr/local/java/jdk1.8.0_261 说明:修改为自己的JDK路径
修改hdfs-site.xml
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml

在节点内加入配置::

<property> <name>dfs.name.dir</name> <value>/root/hadoop/dfs/name</value> <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently. </description> </property> <property> <name>dfs.data.dir</name> <value>/root/hadoop/dfs/data</value> <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop3:50090</value> </property> <property> <name>dfs.permissions</name> <value>false</value> <description>need not permissions</description> </property>
新建并且修改mapred-site.xml
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/mapred-site.xml

在节点内加入配置:

<!-- 配置mapReduce在Yarn上运行(默认本地运行) --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
修改workers文件
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/workers

将里面的localhost删除,添加以下内容:

hadoop-1 hadoop-2 hadoop-3
修改yarn-site.xml文件
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/yarn-site.xml

在节点内加入配置

<property> <description>指定YARN的老大(ResourceManager)的地址</description> <name>yarn.resourcemanager.hostname</name> <value>hadoop-1</value> </property> <!-- NodeManager上运行的附属服务。需要配置成mapreduce_shfffle,才可运行MapReduce程序默认值 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <discription>每个节点可用内存,单位MB,默认8182MB</discription> <name>yarn.scheduler.maximum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
配置hadoop-3.2.0/sbin/目录下start-dfs.sh、start-yarn.sh、stop-dfs.sh、stop-yarn.sh文件

在start-dfs.sh、stop-dfs.sh开始第一行加上

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-1上的 /opt/hadoop/hadoop-3.2.0 文件夹传递复制到从节点
scp -r /opt/hadoop/hadoop-3.2.0 root@hadoop-2:/opt/hadoop/ scp -r /opt/hadoop/hadoop-3.2.0 root@hadoop-3:/opt/hadoop/ scp /etc/profile root@hadoop-2:/etc/ #copy配置文件到各个节点 scp /etc/profile root@hadoop-3:/etc/

5、启动Hadoop

5.1 格式化namenode

因为hadoop-1是namenode,hadoop-2和hadoop-3都是datanode,所以只需要对hadoop-1进行初始化操作,也就是对hdfs进行格式化。 进入到hadoop-1这台机器/opt/hadoop/hadoop-3.2.0/bin目录:

cd /opt/hadoop/hadoop-3.2.0/bin

执行初始化脚本

./hadoop namenode -format

5.2 启动Hadoop

从hadoop-1开始,在三台分别运行:

start-all.sh

5.2 运行结果

hadoop-1是我们的namenode,该机器的IP是192.168.217.128,在本地电脑访问如下地址:

http://192.168.80.132:9870/

自动跳转到了overview页面 在本地浏览器里访问如下地址: http://192.168.217.128:8088/ 自动跳转到cluster页面

在hadoop-1中输入

jps

出现结果如图:

在hadoop-2中输入

jps

出现结果如图: 在hadoop-3中输入

jps

出现结果如图:

最新回复(0)