【三】hadoop分布式配置

环境ubuntu16.04


这里有4台虚拟机ABC

A的IP 192.168.2.103

B的IP 192.168.2.104

C的IP 192.168.2.106

D的IP 192.168.2.107

节点配置情况如下

 

NN

DN

SN



RM

NM

Node1

Y

 

Y


 

Y

 

Node2


Y




 

Y

Node3

 

Y


 


 

Y

Node4

 

Y

 

 


 

Y


1.前期准备(每台机器)

虚拟机配置固定IP

安装SSH


2.修改ABCD虚拟机的hostname

vi /etc/hostname

A的hostname改为 node1

B的hostname改为 node2

C的hostname改为 node3

D的hostname改为 node4


3.修改虚拟机的Hosts

vi /etc/hosts

加入以下内容(四台加一样的)

192.168.2.103    node1

192.168.2.104    node2

192.168.2.106    node3

192.168.2.107    node4


4.查看每台机器是否能相互ping通


5. 创建用户和用户组(四台机器都一样的操作)

创建用户组 addgroup hadoop

创建用户 adduser -ingroup hadoop hadoop


6.给hadoop用户添加权限(四台机器都一样的操作)

vi /etc/sudoers

在root    ALL=(ALL:ALL) ALL下面添加一行

hadoop    ALL=(ALL:ALL) ALL


7.四台机器以hadoop用户登录

su hadoop


8.安装JAVA(四台机器都一样的操作)

安装步骤:Linux安装JAVA


9.配置SSH让各节点之间实现相互免密码登录

如果没有请看配置步骤:SSH免密码登录


10.hadoop安装(如无特别说明,四台机器都一样的操作)

创建路径

mkdir /app/hadoop

cd /app/hadoop

下载(直接在/app/hadoop里面下载)

wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.9.0.tar.gz

解压

tar -zxvf hadoop-2.9.0.tar.gz

创建文件夹

mkdir /app/hadoop/dfs

mkdir /app/hadoop/dfs/name

mkdir /app/hadoop/dfs/data

mkdir /app/hadoop/tmp


修改配置文件 hadoop-env.sh

vi /app/hadoop/hadoop-2.9.0/etc/hadoop/hadoop-env.sh

修改JAVA_HOME的值

export JAVA_HOME=/app/java/jdk1.8.0_101


修改配置文件slaves 配置datanode

vi /app/hadoop/hadoop-2.9.0/etc/hadoop/slaves

将内容改为

node2

node3

node4


修改配置文件core-site.xml

vi /app/hadoop/hadoop-2.9.0/etc/hadoop/core-site.xml

第一个是namenode的入口

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9000</value> 
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/app/hadoop/tmp</value>
    </property>  

</configuration>


修改配置文件hdfs-site.xml

vi /app/hadoop/hadoop-2.9.0/etc/hadoop/hdfs-site.xml

       <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>node1:9001</value>   
       </property>  
     <property>  
             <name>dfs.namenode.name.dir</name>  
             <value>file:/app/hadoop/dfs/name</value>  
       </property>  
      <property>  
              <name>dfs.datanode.data.dir</name>  
              <value>file:/app/hadoop/dfs/data</value>  
       </property>  
       <property>  
               <name>dfs.replication</name>  
               <value>3</value>

        </property> 


修改配置文件mapred-site.xml

cd /app/hadoop/hadoop-2.9.0/etc/hadoop

scp mapred-site.xml.template mapred-site.xml

vi mapred-site.xml

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>

    </property>

  <property>
          <name>mapreduce.jobhistory.address</name>
          <value>node1:10020</value>
  </property>
  <property>

          <name>mapreduce.jobhistory.webapp.address</name>
          <value>node1:19888</value>

  </property>

在windows中的eclipse运行提交到linux上的集群,需要添加一下配置

不然报错/bin/bash: line 0: fg: no job control

  <property>
<name>mapreduce.app-submission.cross-platform</name>
<value>true</value>

  </property>

<property>
    <name>mapreduce.application.classpath</name>
    <value>
        /app/hadoop/hadoop-2.9.0/etc/hadoop,
        /app/hadoop/hadoop-2.9.0/share/hadoop/common/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/common/lib/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/hdfs/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/hdfs/lib/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/mapreduce/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/mapreduce/lib/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/yarn/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/yarn/lib/*
    </value>
</property>    

修改配置文件yarn-site.xml

cd /app/hadoop/hadoop-2.9.0/etc/hadoop

vi yarn-site.xml

配置resourcemanager结点在哪个服务器上运行

<property>

    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
</property>

指定做中间数据调度的时候使用的是哪一种机制
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>


<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

在windows中的eclipse运行提交到linux上的集群,需要添加一下配置

不然报错/bin/bash: line 0: fg: no job control

<property>
    <name>yarn.application.classpath</name>
    <value>
        /app/hadoop/hadoop-2.9.0/etc/hadoop,
        /app/hadoop/hadoop-2.9.0/share/hadoop/common/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/common/lib/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/hdfs/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/hdfs/lib/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/mapreduce/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/mapreduce/lib/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/yarn/*,
        /app/hadoop/hadoop-2.9.0/share/hadoop/yarn/lib/*
    </value>

配置环境变量

sudo vi /etc/profile

在文件末尾加上

export HADOOP_HOME=/app/hadoop/hadoop-2.9.0

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


使修改的环境变量生效

source /etc/profile


格式化namenode(只在namenode,secondary namenode上执行,即是node1和node2)

cd /app/hadoop/hadoop-2.9.0/bin

hdfs namenode -format


启动hadoop

(只在namenode上面执行,即是node1)

cd /app/hadoop/hadoop-2.9.0/sbin

start-all.sh


四台机器输入jps查看是否正确启动

node1


node2


node3


node4



11.在hadoop集群运行任务(只用在namenode上面执行,即是node1)

在HDFS上创建路径

cd /app/hadoop/hadoop-2.9.0/bin

hdfs dfs -mkdir -p /data/input


将要计数的文件放到HDFS上

hdfs dfs -put ~/wordcount.txt /data/input


查看是否将文件放到了HDFS上

hdfs dfs -ls /data/input



运行单词统计任务

cd /app/hadoop/hadoop-2.9.0

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar wordcount /data/input /data/output/wordcount


查看结果

hdfs dfs -cat /data/output/wordcount/part-r-00000 



图形化信息界面用node1的IP

http://192.168.2.103:50070


http://192.168.2.103:8088



猜你喜欢

转载自blog.csdn.net/jy02268879/article/details/80245881