Hadoop分布式平台搭建

Hadoop分布式平台搭建,第1张

Hadoop分布式平台搭建 在linux系统中搭建Hadoop分布式平台

首先解决如果liunx网络出现无法连接的情况,在VMwvare主界面点击“编辑”,然后选择“虚拟网络编辑器”

进入按照如下两个步骤还原默认设置,一般这样设置完毕都可以恢复

1.环境准备
更改虚拟机网络连接方式为桥接模式

为方便使用,我们在Master节点上使用如下命令修改主机名,主节点改为Master即可,从节点改为slave1即可

sudo vim /etc/hostname
#Master重启就会更改成功

使用如下命令知道主节点和从节点的ip地址

ifconfig -a
#192.168.43.186	Master
#192.168.43.129	slave1

然后,在Master节点中执行如下命令打开并修改Master节点中的“/etc/hosts”文件:

sudo vim /etc/hosts

修改后如下图所示:

需要注意的是,一般hosts文件中只能有一个127.0.0.1,其对应主机名为localhost,如果有多余127.0.0.1映射,应删除,特别是不能存在“127.0.0.1 Master”这样的映射记录。修改后需要重启Linux系统。
一般来说,计算机的ip地址都是会变的,为防止变动,我们可以固定ip地址**(如果出现无法联网的情况忽略固定ip这一步骤)**

sudo vim /etc/network/interfaces

这个文件原来的配置如下(如果打开的不是以下内容,最好也不要更改里面内容):

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp

修改之后的配置如下:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*
          
# The loopback network interface
auto lo   
iface lo inet loopback
        
# The primary network interface
auto enp0s3  
#iface enp0s3 inet dhcp
iface enp0s3 inet static
address 192.168.43.186 #IP地址
netmask 255.255.255.0  #子网掩码
gateway 192.168.43.1   #网关
dns-nameservers 8.8.8.8

做好以上工作,重新启动以下虚拟机

sudo reboot     #重启
sudo poweroff   #关机

这样就完成了Master节点和slave节点的配置,然后,需要在各个节点上都执行如下命令,测试是否相互ping得通(在联网状态下),如果ping不通,后面就无法顺利配置成功:

ping Master -c 3   # 只ping 3次就会停止,否则要按Ctrl+c中断ping命令
ping slave1 -c 3



2.配置SSH无密码登录节点
集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

sudo apt-get install openssh-server
ssh localhost

必须要让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”命令返回原来的终端。

ssh Master
exit

如下图所示:

接下来,在Master节点将上公匙传输到slave1节点:

scp ~/.ssh/id_rsa.pub briup@slave1:~/.ssh
#我的从节点用户和主机名为briup@slave1

上面的命令中,scp是secure copy的简写,用于在 Linux下进行远程拷贝文件,类似于cp命令,不过,cp只能在本机中拷贝。
如果执行过程中遇到如下错误(Connection refused):

首先检查slave1是否有安装ssh,如果没有安装就执行如下命令安装

sudo apt-get update
sudo apt-get install openssh-server
ssh localhost

如果已经安装了ssh服务还是不行,则使用如下命令查看端口号是否正确

ss -lnt


出现上面情况表示SSH服务没有安装成功,继续安装SSH服务
如需要更改端口号可以使用如下命令更改端口号

cd /etc/ssh
sudo vim sshd_config

如果SSH服务全部正确执行ss -lnt后会现实如下结果:

如果执行时还出现scp: /.ssh: Permission denied之类的错误,将上述sshd_config里面的PermitRootLogin后面的no或者without-password改为yes即可
执行scp时会要求输入slave1上briup用户的密码,输入完成后会提示传输完毕,如下图所示:

接着在slave1节点上,将SSH公匙加入授权:

mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在,则忽略本命令
cd .ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub    # 用完以后就可以删掉

如果有其他slave节点,也要执行将Master公匙传输到Slave节点以及在Slave节点上加入授权这两步 *** 作。这样,在Master节点上就可以无密码SSH登录到各个slave节点了,可在Master节点上执行如下命令进行检验:

ssh slave1
#再使用ssh Master就可以返回Master用户,但是返回Master用户需要Master的密码


3.安装hadoop以及java环境
此步骤需要在Master节点安装hadoop和java环境,slave1只需要安装java环境即可。
用到的Hadoop版本和jdk版本下载链接如下:
链接:https://pan.baidu.com/s/12EcUYKVJhAQwPKc-LeSzGw
提取码:u74i
这里我是用的hadoop是3.0.3版本,而jdk使用的是jdk-8u91版本,使用如下命令将hadoop和jdk的压缩包解压到相应的目录下:

sudo tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/lib/jvm
sudo tar -xvf  hadoop-3.0.3.tar -C /usr/local

下面继续执行如下命令,设置环境变量:

cd ~
vim ~/.bashrc

打开了这个用户的环境变量配置文件,在这个文件的开头位置,添加如下几行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存.bashrc文件并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

这时,可以使用如下命令查看是否安装成功:

java -version


使用如下命令更改文件夹名字并赋予相应的权限

cd /usr/local/
sudo mv ./hadoop-3.0.3/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R briup ./hadoop    #briup是用户名,hadoop是文件名

或者也可以给hadoop-3.0.3和jdk-8u91建立一个软连接

cd /usr/local
sudo ln -s hadoop-3.0.3  hadoop 
sudo ln -s jdk1.8.0_91  jdk 

Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

如果看不到版本信息,使用vim ~/.profile或者vim ~/.bashrc将里面关于hadoop的配置全部删除,然后可以执行如下命令:

vim ~/.bashrc
#在该文件中最后一句加上unset HADOOP_HOME
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(即把本机作为数据节点),所以,在伪分布式配置时,就采用了这种默认的配置,使得节点既作为名称节点也作为数据节点。在进行分布式配置时,可以保留localhost,让Master节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让Master节点仅作为名称节点使用。
本教程让Master节点仅作为名称节点使用,因此将workers文件中原来的localhost删除,只添加如下一行内容:

cd /usr/local/hadoop/etc/hadoop
vim workers
#将里面的内容改为slave1即可

(2)修改文件core-site.xml
把core-site.xml文件中的和之间的内容修改为如下内容:

cd /usr/local/hadoop/etc/hadoop #后面该文件都是该目录
vim core-site.xml #改哪个文件直接使用vim命令即可

        
                fs.defaultFS
                hdfs://Master:9000
        
        
                hadoop.tmp.dir
                file:/usr/local/hadoop/tmp
                Abase for other temporary directories.
        

(3)修改文件hdfs-site.xml
对于Hadoop的分布式文件系统HDFS而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。但是,本教程只有一个slave节点作为数据节点,即集群中只有一个数据节点,数据只能保存一份,所以 ,dfs.replication的值还是设置为1。hdfs-site.xml具体内容如下:


        
                dfs.namenode.secondary.http-address
                Master:50090
        
        
                dfs.replication
                1
        
        
                dfs.namenode.name.dir
                file:/usr/local/hadoop/tmp/dfs/name
        
        
                dfs.datanode.data.dir
                file:/usr/local/hadoop/tmp/dfs/data
        

(4)修改文件mapred-site.xml
如果“/usr/local/hadoop/etc/hadoop”目录下只有一个mapred-site.xml.template,则需要修改文件名称,把它重命名为mapred-site.xml,然后,把mapred-site.xml文件配置成如下内容:
将mapred-site.xml.template重命名为mapred-site.xml命令如下:

sudo mv ./mapred-site.xml.template/ ./mapred-site.xml

将里面的内容配置为如下内容:


        
                mapreduce.framework.name
                yarn
        
        
                mapreduce.jobhistory.address
                Master:10020
        
        
                mapreduce.jobhistory.webapp.address
                Master:19888
        
        
                yarn.app.mapreduce.am.env
                HADOOP_MAPRED_HOME=/usr/local/hadoop
        
        
                mapreduce.map.env
                HADOOP_MAPRED_HOME=/usr/local/hadoop
        
        
                mapreduce.reduce.env
                HADOOP_MAPRED_HOME=/usr/local/hadoop
         

(5)修改文件 yarn-site.xml
把yarn-site.xml文件配置成如下内容:


        
                yarn.resourcemanager.hostname
                Master
        
        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        

上述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 ~     #因为hadoop.master.tar.gz这个压缩包放在家目录里
scp ./hadoop.master.tar.gz slave1:/home/briup

发送成功会有如下提示:

然后在slave1节点上执行如下命令:

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R briup /usr/local/hadoop #briup表示机器slave1的用户名

同样,如果有其他slave节点,也要执行将hadoop.master.tar.gz传输到slave节点以及在slave节点解压文件的 *** 作。
首次启动Hadoop集群时,需要先在Master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下:

cd /usr/local/hadoop
./bin/hdfs namenode -format

现在就可以启动Hadoop了,启动需要在Master节点上进行,执行如下命令:

./sbin/start-dfs.sh
./sbin/start-yarn.sh
./sbin/mr-jobhistory-daemon.sh start historyserver

通过命令jps可以查看各个节点所启动的进程。如果已经正确启动,则在Master节点上可以看到NameNode、ResourceManager、SecondrryNameNode和JobHistoryServer进程,如下图所示:
Master节点:

slave1节点:

然后可以在浏览器输入IP地址,hadoop3.0.3版本端口号是9870,如图所示:

这样不管你是在Master节点还是在slave1节点都可以执行 *** 作,最后都可以在该浏览器上方的Utilities下的Browse the file system看到所有的文件。
最后,关闭Hadoop集群,需要在Master节点执行如下命令:

./sbin/stop-yarn.sh
./sbin/stop-dfs.sh
./sbin/mr-jobhistory-daemon.sh stop historyserver

5. 执行分布式实例
执行分布式实例过程与伪分布式模式一样,首先创建HDFS上的用户目录,命令如下:

./bin/hdfs dfs -mkdir -p /user/hadoop

然后,在HDFS中创建一个input目录,并把“/usr/local/hadoop/etc/hadoop”目录中的配置文件作为输入文件复制到input目录中,命令如下:

./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5679120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存