本教程讲解Hadoop-3.3.0在Ubuntu系统下集群的搭建。
在正式开始之前,需要自己先安装好一台虚拟机。下面给大家整理了过程中需要用到的资源包,可以自行获取:
链接:https://pan.baidu.com/s/1TWErk6DAyV99WId1af2kqg?pwd=wcop
提取码:wcop
--来自百度网盘超级会员V4的分享
创建hadoop用户
1.打开终端,输入命令,创建新用户
sudo useradd -m hadoop -s /bin/bash
2.为hadoop用户设置密码
sudo passwd hadoop
3.为了我们后面操作方便,这里可以给予hadoop用户添加管理员权限
sudo adduser hadoop sudo
最后,在右上角齿轮注销当前用户,登录上我们刚刚创建的hadoop用户。
更新apt
1.更改下载服务器
系统默认的软件源一般都是在外网,有时候不一定能下载成功,所以可以更改下软件源。进入系统设置(齿轮图标) --> 软件与更新
选择其他站点,再选择国内的软件源。
再点击右下角的选择服务器,输入密码授权。
根据弹窗信息,点击重新载入,等待加载。
2.打开终端,输入命令:
sudo apt-get update
更新apt,后续我们需要通过它来安装软件。
3.安装vim,输入命令:
sudo apt-get install vim
遇到下面提示时,直接输入y即可。
之后回车,等待安装即可。
安装SSH
1.输入命令,安装SSH
sudo apt-get install openssh-server
- 安装成功后,执行下面命令登录到本机
ssh localhost
当有以下提示时,输入yes。然后再输入密码即可登录到本机。
但是这样我们每次登录都是需要密码的,所以我们接下来对ssh进行配置,使能无密码登录。
配置SSH免密登录
1.执行命令exit退出SSH,回到我们原来的窗口
2.利用ssh-keygen生成密钥,并将密钥加到授权中
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
3.再次使用ssh localhost即可无密码登陆到本机
Xshell、Xftp连接
1.xshell、xftp直接在官网下载即可,个人版的免费使用
2.执行命令ifconfig查看当前虚拟机的ip
3.连接xshell、xftp(以xshell为例)
然后输入用户名、密码即可连接成功
安装Java环境
(1)第一种方式
1. cd /usr/lib
2. sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
3. cd ~ #进入hadoop用户的主目录
4. cd Downloads #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u371-linux-x64.tar.gz上传到该目录下
5. sudo tar -zxvf ./jdk-8u371-linux-x64.tar.gz -C /usr/lib/jvm #把JDK文件解压到/usr/lib/jvm目录下
接下来配置环境变量,执行命令
vim ~/.bashrc
在开头加入以下内容
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_371
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存并退出,然后执行以下命令,是配置立马生效。
source ~/.bashrc
最后执行命令查看是否配置成功,出现下面情况即为配置成功
hadoop@ubuntu:~$ java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
(2)第二种方式
1.在没有安装jdk的情况下,我们执行命令java -version,会有提示
2.根据提示执行命令
sudo apt install openjdk-8-jre-headless
3.配置环境变量,执行命令:vim ~/.bashrc,在文件开头加入以下内容
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-i386
export PATH=$JAVA_HOME/bin:$PATH
保存退出
4.执行命令source ~/.bashrc使配置即刻生效
5.执行命令java -version查看是否配置成功
我们进行到这里,在正式安装Hadoop之前的一些基本配置已经完成,我们可以在关机状态(一定要在关机状态下)拍摄一个快照。
Slave1的配置
1.我们通过上面的快照克隆出一个新的虚拟机,作为我们的从节点Slave1.
2.克隆出的Slave1和之前的虚拟机一模一样,但是我们还需要重新配置SSH,然后再按照上面介绍的方法对xshell、xftp进行连接。
Hadoop的安装
1.首先我们先通过网盘下载hadoop-3.3.0的压缩包,然后通过xftp将压缩包传给我们的虚拟机,要记好我们上传到虚拟机的位置,我的是在 /home/hadoop/下载/ 路径下。
2.解压到 /usr/local/ 路径下,输入命令
sudo tar -zxf hadoop-3.3.0-aarch64.tar.gz -C /usr/local
然后我们再修改一下文件名,权限
cd /usr/local/
sudo mv ./hadoop-3.3.0/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
- Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd /usr/local/hadoop
./bin/hadoop version
集群的搭建
1.网络配置
1.改变虚拟机的主机名,我们将主节点设为Master,从节点设为Slave1,使用下面命令
sudo vim /etc/hostname
修改完成后,重新启动虚拟机,打开终端,主机名已经改变
2.然后,在Master节点中执行如下命令打开并修改Master节点中的“/etc/hosts”文件:
sudo vim /etc/hosts
可以在hosts文件中增加如下两条IP和主机名映射关系:
192.168.222.151 Master
192.168.222.152 Slave1
在Slave1节点下的hosts文件下添加上面映射关系,ip根据自己虚拟机情况进行修改。然后再重新启动各虚拟机,打开终端,在各结点下输入命令:测试是否相互ping得通,如果ping不通,后面就无法顺利配置成功:
ping Master -c 3
ping Slave1 -c 3
2.SSH免密登录各节点
必须要让Master节点可以SSH无密码登录到各个Slave节点上。首先,生成Master节点的公匙,如果之前已经生成过公钥,必须要删除原来生成的公钥,重新生成一次,因为前面我们对主机名进行了修改。具体命令如下:
cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa* # 删除之前生成的公匙(如果已经存在)
ssh-keygen -t rsa # 执行该命令后,遇到提示信息,一直按回车就可以
为了让Master节点能够无密码SSH登录本机,需要在Master节点上执行如下命令:
cat ./id_rsa.pub >> ./authorized_keys
完成后可以执行命令“ssh Master”来验证一下,可能会遇到提示信息,只要输入yes即可,测试成功后,请执行“exit”命令返回原来的终端。接下来,在Master节点将上公匙传输到Slave1节点:
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
上面的命令中,scp是secure copy的简写,用于在 Linux下进行远程拷贝文件,类似于cp命令,不过,cp只能在本机中拷贝。执行scp时会要求输入Slave1上hadoop用户的密码,输入完成后会提示传输完毕,如下图所示。
接着在Slave1节点上,将SSH公匙加入授权:
mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在,则忽略本命令
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完以后就可以删掉
这样,在Master节点上就可以无密码SSH登录到各个Slave节点了,可在Master节点上执行如下命令进行检验:
ssh Slave1
3.配置PATH变量
在Master节点下,首先执行命令“vim /.bashrc”,也就是使用vim编辑器打开“/.bashrc”文件,然后,在该文件最上面的位置加入下面一行内容:
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
保存后执行命令“source ~/.bashrc”,使配置生效。
4.配置集群环境
在配置集群/分布式模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个文件
(1)修改workers
在进行分布式配置时,可以保留localhost,让Master节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让Master节点仅作为名称节点使用。
本教程让Master节点仅作为名称节点使用,因此将workers文件中原来的localhost删除,只添加如下一行内容:
Slave1
(2)修改core-site.xml
请把core-site.xml文件修改为如下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
(3)修改hdfs-site.xml
对于Hadoop的分布式文件系统HDFS而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。但是,本教程只有一个Slave节点作为数据节点,即集群中只有一个数据节点,数据只能保存一份,所以 ,dfs.replication的值还是设置为 1。hdfs-site.xml具体内容如下:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
(4)修改mapred-site.xml
把mapred-site.xml文件配置成如下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
</configuration>
(5)修改yarn-site.xml
请把yarn-site.xml文件配置成如下内容:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
上述5个文件全部配置完成以后,需要把Master节点上的“/usr/local/hadoop”文件夹复制到各个节点上。具体来说,需要首先在Master节点上执行如下命令:
cd /usr/local
sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/* # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop
然后在Slave1节点上执行如下命令:
sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop
首次启动Hadoop集群时,需要先在Master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下:
hdfs namenode -format
现在就可以启动Hadoop了,启动需要在Master节点上进行,执行如下命令:
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
通过命令jps可以查看各个节点所启动的进程。如果已经正确启动,则在Master节点上可以看到NameNode、ResourceManager、SecondrryNameNode和JobHistoryServer进程,如下图所示。
在Slave节点可以看到DataNode和NodeManager进程,如下图所示。
缺少任一进程都表示出错。另外还需要在Master节点上通过命令“hdfs dfsadmin -report”查看数据节点是否正常启动,如果屏幕信息中的“Live datanodes”不为 0 ,则说明集群启动成功。由于本教程只有1个Slave节点充当数据节点,因此,数据节点启动成功以后,会显示如下图所示信息。
也可以在Linux系统的浏览器中输入地址“http://master:9870/”,通过 Web 页面看到查看名称节点和数据节点的状态。如果不成功,可以通过启动日志排查原因。
特别需要注意的是,本教程只实现了一个从节点,如果你有更多的从节点,那么对应它们的操作都是一样的。
参考文献
林子雨编著-大数据软件安装和编程实践指南_厦门大学数据库实验室 (xmu.edu.cn)
等等
版权归原作者 偷放霄宫的烟花 所有, 如有侵权,请联系我们删除。