Hadoop集群—完全分布式模式(Fully-Distributed Mode)

    科技2025-12-17  12

    ECS---Hadoop集群完全分布式模式

    1.配置环境2.创建hadoop用户3.修改主机名4.设备之间的免密登录4.1单机的免密登录4.2多服务器的免密登录 5.安装jdk6.安装Hadoop

    1.配置环境

    操作系统:Ubuntu 16.04 LTSjdk-8u171-linux-x64.tar.gzhadoop-2.7.3.tar.gz云服务器若干 参考伪分布式链接:https://blog.csdn.net/qq_42881421/article/details/88781764

    2.创建hadoop用户

    添加hadoop用户 $ sudo adduser username #添加用户 $ ls /home #查看添加是否成功(这里以username为例添加)

    输入sudo adduser (新创建的用户名) sudo,给新用户赋予管理员的权限。 $ sudo adduser hadoop sudo

    效果如下图:(利用sudo su切换到新用户,如需要密码则表示成功了。)

    以下是将hadoop用户赋予了root权限(这里可以跳过直接进行下一步) $ sudo nano /etc/sudoers

    学习一下nano命令的使用,这里使用nano+文件进行编辑,步骤为Ctrl+O进行保存,然后确定路径和文件名无误后点击enter,Ctrl+X退出。

    3.修改主机名

    查看主机名并修改主机名(这里我修改为:Master,其余从机同理修改为slave1和slave2…) $ sudo nano /etc/hostname

    修改主机名后需要重启一下主机名才会改变。 $ sudo reboot

    4.设备之间的免密登录

    4.1单机的免密登录

    检查是否可以进行免密登录,使用ssh命令免密码登陆自己。 $ ssh localhost #测试是否设置过免密登录 检查是否有.ssh目录,若无则需要建立,并增加权限。 $ mkdir -p ~/.ssh #创建目录 $ chmod 700 ~/.ssh #修改目录的权限 创建master主机的密钥。 $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生成密钥对 #执行上面这条命令将会生成:私钥:id_rsa和公钥:id_rsa.pub 将密钥置入盒子(authorized_keys)里,并给它权限。 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #将文件追加到盒子里 $ chmod 600 ~/.ssh/authorized_keys #增加权限 需要修改目录/etc/ssh/sshd_config配置文件,部分代码如下: # Logging SyslogFacility AUTH LogLevel INFO # Authentication: LoginGraceTime 120 PermitRootLogin prohibit-password StrictModes yes RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys #公钥文件,根据情况去掉注释。 $ nano /etc/ssh/sshd_config 验证本地是否可以登录 $ ssh localhost #验证是否可以免密登陆

    效果如图: 7. 验证成功后使用exit退出当前用户。

    4.2多服务器的免密登录

    操作完单机的免密登录,多服务器(每一台服务器均需要执行单机免密登录的操作)需要登录上面执行单击免密登录的操作。建议每台服务器做完单机免密登录再继续分发公钥。 发送公钥:id_rsa.pub $ scp ~/.ssh/id_rsa.pub hadoop@slave1:~/ #分发公钥,若slave1没有修改映射需要填写真实的IP地址 追加密钥给authorized_keys,并给权限。 $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys

    同样的操作将其他的密钥也分别发给其他服务器。 另一做法是用盒子去挨个接收密钥,接收完之后然后再分发给其他服务器。

    注意:如需要是slave1的格式需要执行主机映射。

    修改主机映射 操作如下: $ sudo nano /etc/hosts #修改映射

    如果是在master上操作的话ip1 必须是master 的内网ip,同样其他slave上也是一样,自己的主机上的IP要改成内网IP,其他的要用外网IP。 效果如下: 3. 验证免密登录

    #1.通过localhost验证 $ ssh localhost $ exit #2.通过ip地址验证 $ ssh ip地址 #例如:$ ssh 192.168.23.105 $ exit #3.通过主机名称验证 $ ssh 主机名称 #例如:$ ssh master $ exit

    5.安装jdk

    以下操作均是基于hadoop用户下的操作。jdk版本:云盘下载 提取码:yn1e通过xftp、winscp等上传文件到云服务器。ubuntu 16.04 创建一个soft目录,将文件上传到该目录下面。 $ mkdir -p ~/soft #创建soft目录 $ ls ~/soft #查看目录

    以下操作是基于你将这些文件存放到~/soft的操作

    解压到当前文件夹并创建软链接方便后面使用。 $ tar -zxvf jdk-8u171-linux-x64.tar.gz $ ln -s jdk1.8.0_171 jdk #创建软链接 编辑环境变量 $ nano ~/.bashrc

    在bashrc后面添加环境变量,并保存退出。

    export JAVA_HOME=~/soft/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 使环境变量生效。 $ source ~/.bashrc 验证配置成功。 $ java -version #显示版本号等信息表示成功。

    如下图:

    6.安装Hadoop

    hadoop版本:hadoop-2.7.3.tar.gz 提取码:gcbh上传文件到云服务器使用xftp、winscp等。ubuntu 16.04 通过xftp或者其他上传到master云服务器的~/soft目录下面。 $ ls ~/soft/ 解压gz包,并创建软链接使用。 $ tar -zxvf hadoop-2.7.3.tar.gz $ ln -s hadoop-2.7.3 hadoop

    效果如下:

    查看JAVA_HOME的路径,拷贝后进行下一步。 $ echo $JAVA_HOME 查看JAVA_HOME的绝对路径 配置hadoop-env.sh环境 export JAVA_HOME=/home/hadoop/soft/jdk #若后面格式化的时候找不到.../java就需要添加到jre #export JAVA_HOME=home/hadoop/soft/jdk/jre 配置文件的修改,使用cd ${HADOOP_HOME}/etc/hadoop切换到配置文件所在目录。 core-site.xml文件的修改 $ nano core-site.xml

    在<configuration>标签中插入,修改好的代码如下:

    <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:8020</value> <!-- 以上主机名要按实际情况修改 --> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/soft/hadoop/tmp</value> </property> </configuration>

    附截图一张:

    hdfs-site.xml文件的修改如下: $ nano hdfs-site.xml

    在<configuration>标签中插入,修改好的代码如下:

    <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- secondarynamenode主机名 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:50090</value> </property> <!-- namenode的web访问主机名:端口号 --> <property> <name>dfs.namenode.http-address</name> <value>master:50070</value> </property> </configuration>

    附截图一张:

    mapred-site.xml文件修改

    目录下没有对应的文件夹,但是有mapred-site.xml.template,可以将其重命名使用,但是建议另外cp一下。

    $ cp mapred-site.xml.template mapred-site.xml #更名为mapred-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> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>86400</value> </property> </configuration> 配置yarn-site.xml文件 $ nano yarn-site.xml

    配置文件的修改如下:

    <property> <name>yarn.resourcemanager.hostname</name> <value>slave2</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>86400</value> </property> </configuration>

    注意:以上操作都需要在hadoop文件目下才能操作。

    分发文件 $ scp -r hadoop-2.7.3 slave1:$PWD #拷贝的时间较长建议休息一下。 $ scp -r hadoop-2.7.3 slave2:$PWD 指定集群slaves配置 $ nano slaves

    添加一下内容

    slave1 slave2 格式化Namenode需要谨慎操作 $ hdfs namenode -format

    格式化只需要进行一次,以后启动hadoop前不需要再次格式化。若后续启动有问题出现,需要执行格式化操作需要把所有服务先停止:stop-all.sh

    格式成功后的界面如下:出现status 0表示成功,其他如status 1表示不成功。 温馨小提示——第一次可以跳过温馨提示

    多次格式化:导致启动时缺少Datanode,再格式化后导致ID不符合两个我们需要去修改CID,保证name和data的CID一致。 操作如下(具体路径需要看自己的服务器仅供参考): 1、查看后复制:nano /home/hadoop/soft/hadoop-2.7.3/tmp/dfs/name/current/VERSION 2、修改data:nano /home/hadoop/soft/hadoop-2.7.3/tmp/dfs/data/current/VERSION 将name的CID------------>data的CID

    启动集群 在master上使用如下命令启动HDFS $ sbin/start-dfs.sh 在slave2上使用如下命令启动YARN $ sbin/start-yarn.sh

    停止进程: $ sbin/start-yarn.sh # 在slave2上使用如下命令停止YARN $ sbin/stop-dfs.sh # 在master上使用如下命令停止HDFS

    jps 通过web段访问端口 master公网IP:50070

    云服务器的端口需要开放才能访问。

    slave2公网IP:8088端口

    快乐是码起来的!

    Processed: 0.014, SQL: 9