欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Centos7上搭建Hadoop3.1.1集群

程序员文章站 2022-05-07 18:45:01
...

分配IP

先在草稿纸上分配好IP和主机名,三台主机均能上外网,且均能互相ping通即可。

IP 主机名
192.168.85.101 node1
192.168.85.102 node2
192.168.85.103 node3

再将以上表格内的内容写入/etc/hosts中(每个都要写)

echo '192.168.85.101 node1' >>/etc/hosts
echo '192.168.85.102 node2' >>/etc/hosts
echo '192.168.85.103 node3' >>/etc/hosts

分别在对应IP的主机中修改主机名

在node1中

vi /etc/hostname

将hostname中的内容改为node1

然后执行reboot命令重启主机

在node2,node3中重复上述操作。

关闭防火墙

实验环境中关闭防火墙,防止后续查看web页面访问受阻。

systemctl stop firewalld    #临时关闭
systemctl disable firewalld  #禁止开机启动

配置ssh免密登陆

所有虚拟机中分别执行

ssh-****** -t rsa

三次回车生成**

node1中执行下述操作

生成认证的公钥key,再用下面的命令分发给各个节点

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
scp /root/.ssh/id_rsa.pub aaa@qq.com:/root/.ssh/authorized_keys
scp /root/.ssh/id rsa.pub aaa@qq.com:/root/.ssh/authorized_keys

再给所有虚报机上的authorized_keys添加权限

chmod 644 /root/.ssh/authorized_keys

即可完成node1到其他节点的免密登录

可用以下命令测试ssh免密登陆是否设置成功

ssh aaa@qq.com  #不需输入密码即为成功
exit            #退出ssh

安装JDK

创建java目录

mkdir -p /usr/local/java

下载jdk1.8版本,并将其解压到/usr/local/java目录下

tar -zxf jdk-8u65-linux-x64.tar.gz -C /usr/local/java/

配置环境变量

vi /etc/profile
#在配置文件的最后添加如下配置

#JAVA
JAVA_HOME=/usr/local/java/jdk1.8.0_65   #自己解压后的jdk目录名称
JRE_JOME=/usr/local/java/jdk1.8.0_65/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_JOME CLASS_PATH PATH

保存退出后,执行以下命令刷新环境变量

source /etc/profile

进行测试是否成功

java -version

安装hadoop3.1.1

下载hadoop3.1.11

从清华镜像网站https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.1.1上下载hadoop3.1.1压缩包到本地

Centos7上搭建Hadoop3.1.1集群

在node1主机上创建hadoop目录

mkdir -p /usr/local/hadoop

上传到node1主机上,并解压到/usr/local/hadoop目录下

tar -zxf hadoop-3.1.1.tar.gz -C /usr/local/hadoop/

配置环境变量

vi /etc/profile
#在配置文件最后一行添加如下配置

#HADOOP
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

运行如下命令刷新环境变量

source /etc/profile

进行测试是否成功

hadoop version

配置Hadoop3.1.1

创建目录

#在/usr/local/hadoop目录下创建目录
cd /usr/local/hadoop/
mkdir tmp     
mkdir var  
mkdir dfs  
mkdir dfs/name  
mkdir dfs/data  

修改配置文件

进入hadoop的配置文件目录下

cd /usr/local/hadoop/hadoop-3.1.1/etc/hadoop

vi workers

删除localhost
添加从节点主机名,例如我这里是:
node2
node3

1) hadoop-env.sh

在#  JAVA_HOME=/usr/java/testing hdfs dfs -ls一行下面添加如下代码
export JAVA_HOME=/usr/local/java/jdk1.8.0_65
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
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

以下配置在各个文件的<configuration></configuration>中添加

2)core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.85.101:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>

3) hdfs-site.xml

<property>
   <name>dfs.name.dir</name>
   <value>/usr/local/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>/usr/local/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.namenode.http-address</name>
<value>10.0.0.51:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.0.0.51:50090</value>
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property> 
<property>
      <name>dfs.permissions</name>
      <value>false</value>
      <description>need not permissions</description>
</property>

4) yarn-site.xml

<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

5) mapred-site.xml

 <property>
    <name>mapred.job.tracker</name>
    <value>node1:49001</value>
</property>
<property>
      <name>mapred.local.dir</name>
       <value>/usr/local/hadoop/var</value>
</property>
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>

同步

使用scp命令将node1下的目录复制到各个从节点的相应位置上

scp -r /usr/local/java node2:/usr/local/java
scp -r /usr/local/hadoop node2:/usr/local/hadoop
scp -r /etc/profile node2:/etc/

scp -r /usr/local/java node3:/usr/local/java
scp -r /usr/local/hadoop node3:/usr/local/hadoop
scp -r /etc/profile node3:/etc/

在从节点上分别运行下述命令刷新环境变量

source /etc/profile

格式化节点

在node1中运行下述命令,格式化节点

hdfs namenode -format

运行之后不报错,并在倒数第五六行有successfully即为格式化节点成功

运行以下命令,启动hadoop集群的服务

start-all.sh

在node1上输入jps可以看到node1下的节点

Centos7上搭建Hadoop3.1.1集群

在node2下的节点

Centos7上搭建Hadoop3.1.1集群

在浏览器*问hdfs的web界面

在浏览器上输入http://192.168.85.101:8088(前者为主节点ip地址,后者为hdfs的web进程对应的端口号)

Centos7上搭建Hadoop3.1.1集群