文章目录
- 系统环境
- 安装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
可以在Linux中下载,前提是Linux需要联网,查看 Linux网络配置 。
也可以在Windows上下载,然后上传到Linux系统中。
点击 此处 下载Hadoop。进入网站后,选择一个Hadoop版本。我下载的是3.1.2
下载完成后,解压到目录即可。
配置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
如图:
- 编辑完成后按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_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.
解决办法:
- 用文本编辑器打开sbin目录下的start-dfs.sh和stop-dfs.sh,分别添加如下内容:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
- 用文本编辑器打开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集群搭建
克隆两个从机
克隆前,先将主机关机。步骤如下:
然后一直点击“下一步”,克隆时,选择完整克隆。
最后取名字,选择存放目录即可。
按照以上步骤,克隆2个从机。
说明:
由于系统可能不同,某些系统可能是自动分配IP地址的,所以,以下步骤只供参考,如果缺少某些文件或者文件中的信息与我的不一致时,请不要按照我的方式来修改。以下会提供另外的解决方式。
修改从机配置信息
修改计算机名
分别在从机执行命令 vi /etc/sysconfig/network
,将从机的主机号分别设为MyCentos02和MyCenntos03(名字任取)。
修改IP地址,硬件地址等唯一值
分别在从机执行命令vi /etc/sysconfig/network-scripts/ifcfg-eth0
,修改IPADDR,并删除HWADDR和UUID,在重启后,系统会自动分配HWADDR和UUID。
为了避免系统备份的文件导致配置失效,需要在从机中分别执行命令
rm -r /etc/udev/rules.d/70-peristent-net.rules
,然后输入yes。
说明:
由于系统可能不同,某些系统可能是自动分配IP地址的,所以,可能缺少某些文件或者文件中的信息与我的不一致,请不要按照这种方式来修改。
参照下面的解决方式:
执行ip addr
查看 ip 地址就行了,然后继续执行下面的步骤 修改IP和主机号的映射
修改IP和主机号的映射
在主机和从机中分别执行命令 vi /etc/hosts
,添加如下信息:
配置SSH免密钥登录
给主机和从机重新配置SSH免密登录。(主机的配置方法见上面SSH配置,此处省略)。
主机MyCentos连接从机MyCentos02,执行命令ssh-copy-id MyCentos02
,
执行命令ssh MyCentos02
测试是否连接成功,出现连接时间,说明成功,如所示。且执行后,会切换到主机MyCentos02。接下来,给MyCentos02设置免密钥,并将私钥发给本机,将公钥发给MyCentos和MyCentos03。
接着,执行命令ssh MyCentos03
,通过免密登录到MyCentos03。给MyCentos03设置免密钥,并将私钥发给本机,将公钥发给MyCentos和MyCentos02。
最后,执行命令ssh MyCentos
,通过免密登录到MyCentos。将MyCentos的公钥发送给MyCentos03。
搭建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节点的数目。
最后,在浏览器中访问HDFS的web界面。
出现3个DataNode节点,说明Hadoop集群环境搭建成功。