Centos7上搭建hadoop2.7分布式集群环境实验记录

ps:因为实验需要和学习过程,为了更好学习hadoop,所以为了方便记录以及供学习交流,特此做一份hadoop搭建实验记录。

1.准备三台虚拟机。

2.修改三台虚拟机的主机名分别为master,slave01,slave02

然后修改hosts文件:vi/etc/hosts,然后添加如下内容:(三台主机都要执行该步骤)

172.16.136.43  mMaster

172.16.136.39 mSlave01

172.16.136.38 mSlave02

3.配置ssh免密登陆和访问集群机器

 (1)所有机器上安装ssh服务器

yum -y install openssh-server

 (2)生成公钥

ssh-keygen -t rsa -P ""

cat $HOME/.ssh/id_rsa.pub >>$HOME/.ssh/authorized_keys

(3)发送公钥

scp ~/.ssh/id_rsa.pub root@mSlave01:/home/

scp ~/.ssh/id_rsa.pub root@mSlave02:/home/

(4)在slave01和slave02上执行如下命令。

cat /home/id_rsa.pub >>~/.ssh/authorized_keys

(如果没有.ssh文件夹可以自己创建下 使用mkdir 在/root 文件下使用命令: mkdir .ssh )

(出现的问题,Permissions0644 for '/root/.ssh/id_rsa' are too open.

处理如下:在主控制机器上执行命令:chmod 600 ~/.ssh/id_rsa

然后执行:scp ~/.ssh/id_rsa.pubroot@mSlave02:/home/

在执行:ssh mSlave02 进行测试!成功!

自己给自己主机免密操作 ssh-copy-id –i mMaster(主机名)

                                         SshmMaster 验证

)

(5)测试

ssh  slave01

4.安装jdk (主机执行,后复制到节点机上)

(1)在/usr/目录下创建java目录

mkdir /usr/java

cd /usr/java

(2)把下载好的jdk上传到这个目录下,然后安装,

tar -zxvf jdk-8u151-linux-x64.tar.gz

(3)设置环境变量(使用命令:scp/usr/java mSlave01:/usr scp /usr/java mSlave02:/usr将java文件复制到其另外两台机器目录下,并且重新全部设置环境变量并刷新)

 vi ~/.bashrc(这个文件必须配置这个路径,且不能取消)

export JAVA_HOME=/usr/java/jdk1.8.0_151

JAVA_HOME=/usr/java/jdk1.8.0_151

 vi /etc/profile

在profile中添加如下内容:

#set java environment

JAVA_HOME=/usr/java/jdk1.8.0_151

JRE_HOME=/usr/java/jdk1.8.0_151/jre

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

(4) 让配置生效

source /etc/profile

source ~/.bashrc

(5)验证

java -version

 

 5.安装hadoop,先在master主机上做安装Hadoop,暂时不需要在slave01,slave02主机上安装Hadoop.稍后会把master配置好的Hadoop发送给slave01,slave02.在master主机执行下列操作:

  (1)把下载好的安装包hadoop-2.7.3.tar.gz上传到/usr/local目录,然后解压安装

  tar-zxvf   hadoop-2.7.3.tar.gz

(2) 将文件夹名改为Hadoop

mv ./hadoop-2.7.3/ ./Hadoop

(3)编辑~/.bashrc文件

vi ~/.bashrc

添加如下内容:

export HADOOP_HOME=/usr/local/Hadoop

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin

 

更新

source ~/.bashrc

 

6.hadoop集群配置

在master主机下执行

cd /usr/local/Hadoop/etc/hadoop

1)修改slavesvi slaves
这里把DataNode的主机名写入该文件,每行一个。这里让master节点主机仅作为NameNode使用。

mSlave01

mSlave02

 (2) 修改core-site.xml(内里的一些编码的对应的主机名也是要变换的,并且还是三台机器都是要做的。)

 <configuration>
      <property>
          <name>hadoop.tmp.dir</name>
          <value>file:/usr/local/hadoop/tmp</value>
          <description>Abase for other temporary directories.</description>
      </property>
      <property>
          <name>fs.defaultFS</name>
          <value>hdfs://mMaster:9000</value> <!--主机名-->
      </property>
  </configuration>

(3) 修改hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>:
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>mMaster:9001</value> <!--主机名-->
    </property>
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>
   </configuration>

(4) 修改mapred-site.xml(复制mapred-site.xml.template,再修改文件名)

  直接执行如下命令即可完成复制

cp mapred-site.xml.template mapred-site.xml

  在修改mapred-site.xml文件:vi mapred-site.xml

<configuration>

    <property>

       <name>mapreduce.framework.name</name>

       <value>yarn</value>

    </property>

  </configuration>

(5) 修改yarn-site.xml

<configuration>
  <!-- Site specific YARN configuration properties -->
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
      <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>mMaster</value> <!--主机名-->
      </property>
  </configuration>

6)配置好后,将 master 上的/usr/local/Hadoop 文件夹复制到各个节点上。之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 master 节点主机上执行:

cd /usr/local/

$rm -rf ./hadoop/tmp   # 删除临时文件

$rm -rf ./hadoop/logs/*   # 删除日志文件(这两步删除操作在本实验中不需要)

$tar -zcf ~/hadoop.master.tar.gz ./Hadoop(把hadoop目录压缩到hadoop.master.tar.gz文件中)

$cd ~

$scp ./hadoop.master.tar.gz mSlave01:/home(通过scp命令把刚刚压缩的文件发过去)

$scp ./hadoop.master.tar.gz mSlave02:/home

 

(7) 在mSlave01,mSlave02节点上执行:

$sudo rm -rf /usr/local/hadoop/(若已经有hadoop目录的话,就把它删除)

$sudo tar -zxf /home/hadoop.master.tar.gz -C /usr/local

$sudo chown -R hadoop /usr/local/hadoop(这一步是在用hadoop时用来获取权限的,本实验用的是root用户,不需要)

7.启动集群

格式化主节点:hdfs namenode -format

启动:start-all.sh

查看节点:jps

错误1:查看的时候遇到了一个错误,datanode,启动不了,弄了好久,最后发现是hdfs-site.xml有一个单词少了一个字母,当时在master节点改过来了,却忘记在slave01和slave02改过来,我觉得这是跟我当时做这个的时候心情烦躁,所以注意力不集中的导致的。最后是第二天早上过来查看slave01和slave02的日志才发现的。这就告诉我们做实验的时候,注意力一定要集中,还有出了错误一定要首先去看日志找错误原因。

错误2:错误一解决了之后,又出现了一个错误,slave01节点的datanode无法启动,原因是格式化太多次,id不同步导致的,删除dfs下data的所有文件然后重新格式化和启动集群即可。

错误3:在创建hadoop的过程中,对于主机namenode节点也是必须要将主机mMaster作为自己的子节点进行免密操作。

错误4:在对于的一些的xml文件的修改中一定切记切记就是要将的主机名的那处位置进行更改,不能就是别人所写的进行复制黏贴而已。

错误5:java路径的配在的配置文件中的有两个文件,最好是配置在~/.bashrc中,这个是针对于用户所写的,并且对于jdk的配置,多少台机器都是要安装,并且在各种修改配置文件之后,记得一定是要将的配置文件更新,使用source命令。

错误6:在针对如果的进行免密操作的时候,常常出现的6040权限过大的问题,按照的教程中的,需要将其中的权限修改为600即可,如果教程不够详尽,可以百度查询都有。

错误7:对于的子节点的文件配置中,在配置xml文件的时候,也必须记得配置slaves文件,使用命令 :vi slaves (在cd /usr/local/Hadoop/etc/hadoop目录下),之前看教程不够仔细,忽略了。




版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/mukvintt/article/details/79947739
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页