文章目录

  • 系统环境
  • 安装JDK
  • 下载Hadoop
  • 配置Hadoop
  • 配置JDK环境
  • 配置Hadoop环境
  • 配置Hadoop环境变量
  • 修改Hadoop配置文件
  • SSH免密登录
  • 测试SSH是否成功
  • 启动Hadoop服务
  • 启动报错解决
  • Hadoop集群搭建
  • 克隆两个从机
  • 修改从机配置信息
  • 修改计算机名
  • 修改IP地址,硬件地址等唯一值
  • 修改IP和主机号的映射
  • 配置SSH免密钥登录
  • 搭建Hadoop集群环境
  • 修改从机的配置文件
  • 修改主机配置
  • 查看Hadoop集群环境


系统环境

需要安装Linux系统。我使用的 Centos6.8,如果系统和我的不一致,下面的操作可能会有不同。

安装JDK

可以在Linux中下载,前提是Linux需要联网,查看 Linux网络配置
也可以在Windows上下载,然后上传到Linux系统中。

进入Oracle官网,下载JDK8,我选择压缩包格式。

hadoop用户没网 hadoop需要联网吗_hadoop用户没网

下载Hadoop

可以在Linux中下载,前提是Linux需要联网,查看 Linux网络配置
也可以在Windows上下载,然后上传到Linux系统中。

点击 此处 下载Hadoop。进入网站后,选择一个Hadoop版本。我下载的是3.1.2

hadoop用户没网 hadoop需要联网吗_hadoop_02


hadoop用户没网 hadoop需要联网吗_hadoop_03


下载完成后,解压到目录即可。

配置Hadoop

以下提到的 $HADOOP_HOME 表示Hadoop的解压目录,请用自己的解压目录

配置JDK环境

  • 在Linux命令终端,执行 cd /myfile/jdk,切换到该目录下,然后对该目录下的JDK压缩文件进行解压,执行命令 tar -zxvf /myfile/jdk/jdk-8u231-linux-x64.tar.gz -C /myfile/jdk 解压。
  • 执行命令 vi /etc/profile,按“A”或“I”进入编辑内容,配置JDK环境变量:
JAVA_HOME=/myfile/jdk/jdk1.8.0_231
export PATH=$JAVA_HOME/bin: $PATH
  • 编辑完成后按ESC退出编辑状态,然后执行命令:wq或快捷键shift+z+z保存并退出。
  • 编辑完成后进行配置文件的刷新,执行命令 source /etc/profile
  • 执行命令 java -version,如下所示,说明JDK配置成功:

配置Hadoop环境

将下载好的压缩包解压,执行命令 tar -zxvf /myfile/hadoop/hadoop-3.1.2.tar.gz

配置Hadoop环境变量

  • 在终端执行命令 vi /etc/profile,按“A”或“I”进入编辑,添加HADOOP_HOME:
HADOOP_HOME=/myfile/hadoop/hadoop-3.1.2
  • 给PATH添加Hadoop安装目录下的bin和sbin,如下:
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin: $PATH
  • 编辑完成后按ESC退出编辑状态,然后执行命令 :wq或快捷键shift+z+z保存并退出。
  • 保存后进行配置文件的刷新,执行命令 source /etc/profile

修改Hadoop配置文件

  • 进入 $HADOOP_HOME/etc/hadoop/目录下,执行命令 vi hadoop-env.sh,按“A”或“I”进入编辑内容,在文件中配置JDK环境变量:
export JAVA_HOME=/myfile/jdk/jdk1.8.0_231

如图:

hadoop用户没网 hadoop需要联网吗_hadoop_04

  • 编辑完成后按ESC退出编辑状态,然后执行命令:wq或快捷键shift+z+z保存并退出。
  • 接着,输入命令hadoop version,查看hadoop的环境变量是否配置成功,若配置成功,则会出现以下信息:

接下来配置HDFS:

  • 在 $HADOOP_HOME/etc/hadoop/目录下,执行命令vi core-site.xml,修改配置文件core-site.xml,内容如下:
  • 在 $HADOOP_HOME/etc/hadoop/目录下,执行命令vi hdfs-site.xml,修改配置文件hdfs-site.xml,内容如下:
  • 在$HADOOP_HOME/etc/hadoop/目录下,执行命令vi mapred-site.xml,修改配置文件mapred-site.xml,内容如下:
  • 在$HADOOP_HOME/etc/hadoop/目录下,执行命令vi yarn-site.xml,修改配置文件yarn-site.xml,内容如下:

SSH免密登录

要启动Hadoop服务,需要配置SSH。

  • 在终端执行命令ssh-keygen -t rsa,然后一直回车,生成密钥。
  • 执行命令ssh-copy-id localhost,在提示信息中输入yes,然后输入本机密码。

测试SSH是否成功

执行命令ssh localhost,出现登录时间,说明ssh配置成功。

hadoop用户没网 hadoop需要联网吗_hdfs_05

启动Hadoop服务

  • 进入目录 $HADOOP_HOME,执行命令hdfs namenode -format,初始化节点。
  • 进入目录 $HADOOP_HOME/sbin/,执行命令start-all.sh,然后执行命令jps,出现以下6个线程说配置成功:
启动报错解决

错误详情:

[root@MyCentos sbin]# ./start-dfs.sh
Starting namenodes on [master]
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 [slave1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined.

解决办法:

  1. 用文本编辑器打开sbin目录下的start-dfs.sh和stop-dfs.sh,分别添加如下内容:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
  1. 用文本编辑器打开sbin目录下的start-yarn.sh和stop-yarn.sh,分别添加如下内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

修改后记得保存。。。
修改后记得保存。。。
修改后记得保存。。。

注意事项:
如果直接用vi命令打开,保存时可能会提示E212: Can’t open file for writing,无法修改。因此,我直接用的记事本打开修改,简单粗暴。

修改完成后,先执行 stop-all.sh关闭Hadoop(如果之前未关闭的话),再执行start-all.sh重新启动Hadoop服务,然后执行 jps 查看线程。如果还是报错或者没有6个线程的话,请进入$HADOOP_HOME(Hadoop安装目录),删除hdfs,logs 和 tmp文件夹(如果有的话),再执行 hdfs namenode - format,然后执行 start-all.sh 启动服务。

  • 为了进一步确认,在浏览器中进行测试
    8088端口:

    9870端口:
    Hadoop3以后的版本,原先的50070端口已经被修改成9870端口。

到此,Hadoop环境已经搭建完成,接下来搭建集群,这里我准备搭建3台(1主2从)。

Hadoop集群搭建

克隆两个从机

克隆前,先将主机关机。步骤如下:

hadoop用户没网 hadoop需要联网吗_Hadoop_06


然后一直点击“下一步”,克隆时,选择完整克隆。

hadoop用户没网 hadoop需要联网吗_Hadoop_07


最后取名字,选择存放目录即可。

按照以上步骤,克隆2个从机。

说明:
由于系统可能不同,某些系统可能是自动分配IP地址的,所以,以下步骤只供参考,如果缺少某些文件或者文件中的信息与我的不一致时,请不要按照我的方式来修改。以下会提供另外的解决方式。

修改从机配置信息

修改计算机名

分别在从机执行命令 vi /etc/sysconfig/network ,将从机的主机号分别设为MyCentos02和MyCenntos03(名字任取)。

hadoop用户没网 hadoop需要联网吗_linux_08


hadoop用户没网 hadoop需要联网吗_hadoop_09

修改IP地址,硬件地址等唯一值

分别在从机执行命令vi /etc/sysconfig/network-scripts/ifcfg-eth0,修改IPADDR,并删除HWADDR和UUID,在重启后,系统会自动分配HWADDR和UUID。

hadoop用户没网 hadoop需要联网吗_linux_10


hadoop用户没网 hadoop需要联网吗_hdfs_11


为了避免系统备份的文件导致配置失效,需要在从机中分别执行命令

rm -r /etc/udev/rules.d/70-peristent-net.rules,然后输入yes。

说明:
由于系统可能不同,某些系统可能是自动分配IP地址的,所以,可能缺少某些文件或者文件中的信息与我的不一致,请不要按照这种方式来修改。
参照下面的解决方式:
执行 ip addr 查看 ip 地址就行了,然后继续执行下面的步骤 修改IP和主机号的映射

修改IP和主机号的映射

主机从机中分别执行命令 vi /etc/hosts,添加如下信息:

hadoop用户没网 hadoop需要联网吗_hdfs_12

配置SSH免密钥登录

给主机和从机重新配置SSH免密登录。(主机的配置方法见上面SSH配置,此处省略)。

主机MyCentos连接从机MyCentos02,执行命令ssh-copy-id MyCentos02

hadoop用户没网 hadoop需要联网吗_linux_13


执行命令ssh MyCentos02测试是否连接成功,出现连接时间,说明成功,如所示。且执行后,会切换到主机MyCentos02。接下来,给MyCentos02设置免密钥,并将私钥发给本机,将公钥发给MyCentos和MyCentos03。

hadoop用户没网 hadoop需要联网吗_Hadoop_14


hadoop用户没网 hadoop需要联网吗_hadoop用户没网_15


接着,执行命令ssh MyCentos03,通过免密登录到MyCentos03。给MyCentos03设置免密钥,并将私钥发给本机,将公钥发给MyCentos和MyCentos02。

hadoop用户没网 hadoop需要联网吗_hdfs_16


最后,执行命令ssh MyCentos,通过免密登录到MyCentos。将MyCentos的公钥发送给MyCentos03。

hadoop用户没网 hadoop需要联网吗_hadoop_17

搭建Hadoop集群环境

上面的步骤只是搭建了3台独立的Hadoop环境,它们之间没有任何联系,接下来的操作就是把2台从机挂载到主机上面,使主机有3个DataNode节点,这样做会使从机不能单独运行Hadoop。

修改从机的配置文件

  • 在$HADOOP_HOME/etc/hadoop文件夹中,分别修改从机的core-site.xml、hdfs-site.xml和yarn-site.xml文件。分别在两台从机中执行命令 vi core-site.xml,然后修改namenode的hostname为主机(不是本机)的主机名或主机的IP地址,
  • 然后在主机和从机中分别执行命令 vi hdfs-site.xml,修改block的副本数量为3。(此处主机里面也要做修改)
  • 接着在从机中分别执行命令 vi yarn-site.xml,修改resourcemanager的位置为主机的主机名或主机的IP地址。

修改主机配置

  • 在主机的$HADOOP_HOME/etc/hadoop中(只需要在主机中修改),修改workers文件中内容,执行命令 vi workers,写入挂载到主机的DataNode节点的主机号或IP地址。
  • 最后,在$HADOOP_HOME/中,删除文件夹tmp、hdfs、logs(主机和从机都需要删除,如果有的话)。
  • 然后在主机(只针对主机)的$HADOOP_HOME/sbin/目录下,执行命令hdfs namenode -format。执行此命令之前,请确保主机和从机的hadoop服务没有启动,只需在主机中执行该命令
  • 若执行过程不出错,则格式化成功。接下来在主机中执行命令 vi start-all.sh。执行前请确保从机没有启动服务,否则主机执行命令会报错,错误如下。
  • 在主机中执行命令jps,查看进程状态,出现以下6个进程,说明启动成功

查看Hadoop集群环境

在主机中执行命令hdfs fsck /,查看DataNode节点的数目。

hadoop用户没网 hadoop需要联网吗_hadoop用户没网_18


最后,在浏览器中访问HDFS的web界面。

hadoop用户没网 hadoop需要联网吗_hadoop用户没网_19


hadoop用户没网 hadoop需要联网吗_hadoop_20


出现3个DataNode节点,说明Hadoop集群环境搭建成功。