Hadoop3.2.0 伪分布环境搭建

Hadoop伪分布环境搭建

配置网络

vi /etc/sysconfig/network-scripts/ifcfg-ens33 

修改主机名

vi /etc/hostname

安装JDK

mkdir -p /data/soft

配置JDK环境变量

配置环境变量

vi /etc/profile
......
export JAVA_HOME=/data/soft/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH

生效环境变量

source /etc/profile

配置免密登录

生成秘钥

ssh-keygen -t rsa

rsa是一种加密算法

注意:执行这个命令后,需要连续按4次回车键到linux命令才会表示这个操作执行结束,在按回车的时候不需要输入任何内容

[root@bigdata01 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
 +---[RSA 2048]----+
| o. | | ooo.|
| o.. = o o  | 
| +o* o * o  |
|..=.= B S = | 
|.o.o o B = .| 
|o.o . +.o . | 
|.E.o.=...o  | 
| .o+=*..    |
 +----[SHA256]-----+

执行成功之后,会在~/.ssh目录下生成对应的公钥和秘钥文件

[root@bigdata01 ~]# ll ~/.ssh/
total 12
-rw-------. 1 root root 1679 Apr  7 16:39 id_rsa
-rw-r--r--. 1 root root  396 Apr  7 16:39 id_rsa.pub
-rw-r--r--. 1 root root  203 Apr  7 16:21 known_hosts

下一步将公钥拷贝到需要免秘钥登录的机器上。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

测试免秘钥配置是否生效

ssh bigdata01

安装Hadoop 3.2.0

上传hadoop安装包到/data/soft目录下

解压hadoop安装包

tar -zxvf hadoop-3.2.0.tar.gz

hadoop目录下有两个重要的目录,一个是bin目录,一个是sbin目录。

bin:这里面有hdfs、yarn等启动脚本,这些脚本后期主 要是为了操作hadoop集群中的hdfs和yarn组件。
sbin:这里有很多start stop开头的脚本,负责启动或者停止组件。

修改相关配置文件

  • hadoop-env.sh
  • core-site.xml
  • hdfs.site.xml
  • mapred-site.xml
  • yarn-site.xml
  • works

首先修改hadoop-env.sh,增加环境变量信息,添加在hadoop-env.sh文件末尾即可。
JAVA_HOME:指定JAVA安装的位置
HADOOP_LOG_DIR:hadoop日志安装的位置

export JAVA_HOME=/data/soft/jdk1.8
export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop

修改core-site.xml文件

注意fs.defaultDFS属性的主机名需要和配置的主机名保持一致

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop_repo</value>
   </property>
</configuration>

修改hdfs-site.xml,把hdfs中文件副本数设置为1,因本次伪分布只有一个节点。

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

修改mapred-site.xml,设置mapreduce使用的资源计算框架

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

修改yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
	    <name>yarn.nodemanager.env-whitelist</name>        
	    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_TARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

修改works,设置集群中从节点的主机名信息,伪分布就一台主机,所以就填写BigData01即可

vi workers
bigdata01

配置到文件部分修改至此告一段落,但还不能直接启动。因为hadoop中的HDFS是一个分布式的文件系统,文件系统在使用之前是需要先格式化的。

格式化HDFS

cd /data/soft/hadoop-3.2.0
bin/hdfs namenode -format

当看到successfully formatted这条信息就说明格式化成功了。

注意:格式化只能执行一次,如果格式化的时候失败了,可以修改配置文件后在执行格式化,如果格式化成功了就不能再反复的执行,否则集群会出现NameNode current Version和Data current Version中ClusterId不一致
如果确实需要重复执行,那么需要把/data/hadoop_repo目录中的内容全部删除,再执行格式化。

启动伪分布集群

使用sbin目录下的start-all.sh脚本

[root@bigdata01 hadoop-3.2.0]# sbin/start-all.sh
Starting namenodes on [bigdata01]
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 [bigdata01]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operatio 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.

执行的时候会发现很多ERROR信息,提示缺少HDFS和YARN的一些用户信息。
解决方案如下:
修改sbin目录下的start-dfs.sh,stop-dfs.sh这两个脚本信息。

cd sbin
vi start-dfs.sh
# 添加用户信息如下
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vi stop-dfs.sh
# 添加用户信息如下
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

修改sbin目录下的start-yarn.shstop-yarn.sh这两个脚本信息。

vi start-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
vi stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

注:不要将添加内容放到脚本最下面,这样启动的时候依然会报错,建议放在limit之后
再次启动集群

[root@bigdata01 ~]# start-all.sh 
Starting namenodes on [bigdata01]
Last login: Sun Mar 28 17:15:22 CST 2021 on pts/0
Starting datanodes
Last login: Sun Mar 28 17:15:46 CST 2021 on pts/0
Starting secondary namenodes [bigdata01]
Last login: Sun Mar 28 17:15:48 CST 2021 on pts/0
Starting resourcemanager
Last login: Sun Mar 28 17:15:53 CST 2021 on pts/0
Starting nodemanagers
Last login: Sun Mar 28 17:16:03 CST 2021 on pts/0

验证集群进行信息

执行jps命令可以看到集群的进程信息,除去jps这个进程之外,还需要有5个进程才说明集群是正常启动的。

[root@bigdata01 ~]# jps
13539 SecondaryNameNode
13779 ResourceManager
13177 NameNode
18874 Jps
13307 DataNode
13919 NodeManager

还可以通过WebUI界面来验证集群是否正常启动

如果想通过主机名访问,需要修改windows/MAC 中的host文件。

停止集群

如果修改了集群的某些配置文件或者其他原因需要停止集群,可以使用stop-all.sh

[root@bigdata01 ~]# stop-all.sh
Stopping namenodes on [bigdata01]
Last login: Sun Mar 28 17:06:24 CST 2021 from gateway on pts/0
Stopping datanodes
Last login: Sun Mar 28 17:15:00 CST 2021 on pts/0
Stopping secondary namenodes [bigdata01]
Last login: Sun Mar 28 17:15:02 CST 2021 on pts/0
Stopping nodemanagers
Last login: Sun Mar 28 17:15:15 CST 2021 on pts/0
Stopping resourcemanager
Last login: Sun Mar 28 17:15:20 CST 2021 on pts/0
原文地址:https://www.cnblogs.com/shine-rainbow/p/14590675.html