Linux-部署Hadoop环境

实验环境:

       主机名          IP地址              角色

master         192.168.1.201        NameNode 
node01        192.168.1.202        DataNode1 
node02        192.168.1.203        DataNode2

实验前期环境准备:

三台机器上配置hosts文件,如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.201   master

192.168.1.202   node01

192.168.1.203   node02

scp  /etc/hosts  root@192.168.1.202:/etc/

scp  /etc/hosts  root@192.168.1.203:/etc/

创建运行hadoop用户账号和Hadoop目录。  尽量不用root帐号运行

xshell中:

输入:useradd -u 8000 hadoop

        echo 123456 | passwd --stdin hadoop

配置在master上,可以ssh无密码登录机器masternode01node02 ,方便后期复制文件和启动服务。因为namenode启动时,会连接到datanode上启动对应的服务。

su hadoop

ssh-keygen(一路回车)

导入公钥到其他datanode节点认证文件

ssh-copy-id 192.168.1.201

ssh-copy-id 192.168.1.202

ssh-copy-id 192.168.1.203

 

配置Hadoop环境,安装Java环境JDK:三台机器上都要配置

master安装jdk

上传jdk软件包到master

tar xf jdk-8u171-linux-x64.tar.gz

mv jdk-8u171 /usr/local/jdk

vim /etc/profile           #设置java的环境变量

在文件末尾添加以下内容:

export JAVA_HOME=/usr/local/jdk

export JAVA_BIN=/usr/local/jdk/bin

export PATH=${JAVA_HOME}/bin:$PATH

export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

source /etc/profile       #是配置文件生效

验证:

       Java -version

将此java环境复制到node01node02上:

scp -r /usr/local/jdk root@192.168.1.202:/usr/local/jdk

scp -r /usr/local/jdk root@192.168.1.203:/usr/local/jdk

分别修改node01node02/etc/profile文件:

添加:

export JAVA_HOME=/usr/local/jdk

export JAVA_BIN=/usr/local/jdk/bin

export PATH=${JAVA_HOME}/bin:$PATH

export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

然后使配置生效:

source /etc/profile

测试:

       Java -version

 

xuegod63安装Hadoop 并配置成namenode主节点

上传软件包到服务器并解压:

hadoop的安装目录是:/home/hadoop/hadoop-2.6.5

tar xf hadoop-2.6.5-tar.gz -C /home/hadoop/

 

创建hadoop相关的工作目录

       mkdir -p /home/hadoop/dfs/name

       mkdir -p /home/hadoop/dfs/data

       mkdir -p /home/hadoop/tmp

ls /home/hadoop/

hadoop-2.6.5  dfs  tmp

 

配置Hadoop:需要修改7个配置文件

文件位置:/home/hadoop/hadoop-2.6.5/etc/hadoop/

文件名称: hadoop-env.shyarn-evn.shslavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml

1、配置文件hadoop-env.sh,指定hadoopjava运行环境

cd /home/hadoop/hadoop-2.6.5/etc/hadoop/

vim hadoop-env.sh

改:25 export JAVA_HOME=${JAVA_HOME}

为:25 export JAVA_HOME=/usr/local/jdk

注:指定java运行环境变量

2、配置文件yarn-env.sh,指定yarn框架的java运行环境

该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。

yarn Hadoop 的新 MapReduce 框架YarnHadoop 0.23.0 版本后新的 map-reduce 框架(Yarn) 原理。

vim yarn-env.sh

改:26   JAVA_HOME=$JAVA_HOME

为:26   JAVA_HOME=/usr/local/jdk

3、配置文件slaves ,指定datanode 数据存储服务器

将所有DataNode的机器名字写入此文件,每个主机名一行:配置如下

vim slaves

改: localhost

为:  node01

        node02

4、配置文件core-site.xml,指定访问hadoop web界面访问路径

这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoopHDFS系统的命名,位置为主机的9000端口;

hadoop.tmp.dir配置了hadooptmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下。

vim core-site.xml

19行和20行之间插入以下内容:

<configuration>

<property>

      <name>fs.defaultFS</name>

          <value>hdfs://master:9000</value>       #修改为NameNode的主机名即本机的主机名

 </property>

 

 <property>

     <name>io.file.buffer.size</name>

         <value>131072</value>

 </property>

 

 <property>

     <name>hadoop.tmp.dir</name>

         <value>file:/home/hadoop/tmp</value>

             <description>Abase for other temporary directories.</description>

 </property>

</configuration>

 

5、配置文件hdfs-site.xml

这个是hdfs的配置文件,dfs.http.address配置了hdfshttp的访问位置;

dfs.replication配置了文件块的副本数,一般不大于从机的个数。

改:19 <configuration>

    20

 21 </configuration>

注: 在<configuration></configuration>中间插入以一下红色和蓝色标记内容:

为:

<configuration>

  <property>

      <name>dfs.namenode.secondary.http-address</name>

      <value>master:9001</value>   # 通过web界面来查看HDFS状态

  </property>

 

  <property>

      <name>dfs.namenode.name.dir</name>

      <value>file:/home/hadoop/dfs/name</value>

  </property>

 <property>

    <name>dfs.datanode.data.dir</name>

        <value>file:/home/hadoop/dfs/data</value>

 </property>

 

 <property>

    <name>dfs.replication</name>

    <value>2</value>    #每个Block2个备份。

 </property>

 

 <property>

    <name>dfs.webhdfs.enabled</name>

        <value>true</value>

 </property>

 

</configuration>

 

注:

<property>

      <name>dfs.namenode.secondary.http-address</name>

      <value>master:9001</value>   # 通过web界面来查看HDFS状态

  </property>

 <property>

    <name>dfs.replication</name>

    <value>2</value>    #每个Block2个备份。

 </property>

 

6、配置文件mapred-site.xml

这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarnmapred.map.tasksmapred.reduce.tasks分别为mapreduce的任务数,

同时指定:Hadoop的历史服务器historyserver

Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的,我们可以通过下面的命令来启动Hadoop历史服务器

vim mapred-site.xml-template

改:19 <configuration>

 20

 21 </configuration>

注: 在<configuration></configuration>中间插入以一下红色和蓝色标记内容:

为:

<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>

 

</configuration>

 

copy mapred-site.xml.template mapred-site.xml

/home/hadoop/hadoop-2.6.5/sbin/mr-jobhistory-daemon.sh  start historyserver

这样我们就可以在相应机器的19888端口上打开历史服务器的WEB UI界面。可以查看已经运行完的作业情况。

7、配置节点yarn-site.xml

该文件为yarn框架的配置,主要是一些任务的启动位置

vim yarn-site.xml

改:

<configuration>

 

<!-- Site specific YARN configuration properties -->

 

</configuration>

注: 在<configuration></configuration>中间插入以一下红色和蓝色标记内容:

 

为:

<configuration>

 

<!-- Site specific YARN configuration properties -->

 <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>

 

 <property>

    <name>yarn.resourcemanager.address</name>

    <value>master:8032</value>

 </property>

 

 <property>

     <name>yarn.resourcemanager.scheduler.address</name>

         <value>master:8030</value>

 </property>

 

 <property>

     <name>yarn.resourcemanager.resource-tracker.address</name>

     <value>master:8031</value>

 </property>

 

 <property>

    <name>yarn.resourcemanager.admin.address</name>

    <value>master:8033</value>

 </property>

 

 <property>

    <name>yarn.resourcemanager.webapp.address</name>

    <value>master:8088</value>

 </property>

 

</configuration>

 

复制到其他datanode节点: node01node02

scp -r /home/hadoop/hadoop-2.6.5/ hadoop@node01:~/

scp -r /home/hadoop/hadoop-2.6.5/ hadoop@node02:~/

xuegod63上启动Hadoop

切换到hadoop用户:

hadoop namenode的初始化,只需要第一次的时候初始化,之后就不需要了

/home/hadoop/hadoop-2.2.0/bin/hdfs namenode -format

启动hdfs: ./sbin/start-dfs.sh,即启动HDFS分布式存储

/home/hadoop/hadoop-2.2.0/sbin/start-dfs.sh

 

 

查看进程,此时master有进程:namenode secondarynamenode进程:

node01node02上有进程DataNode 

xuegod63上启动yarn:

/home/hadoop/hadoop-2.6.5/sbin/start-yarn.sh  # 即,启动分布式计算

starting yarn daemons

starting resourcemanager, logging to /home/hadoop/hadoop-2.6.5/logs/yarn-root-resourcemanager-master.out

node01: starting nodemanager, logging to /home/hadoop/hadoop-2.6.5/logs/yarn-root-nodemanager-node01.out

node02: starting nodemanager, logging to /home/hadoop/hadoop-2.6.5/logs/yarn-root-nodemanager-node02.out

查看进程:

查看master上的ResourceManager进程node01node02上的进程:DataNode NodeManager

注:start-dfs.sh  start-yarn.sh 这两个脚本可用start-all.sh代替。

启动:

/home/hadoop/hadoop-2.6.5/sbin/start-all.sh

关闭:

/home/hadoop/hadoop-2.6.5/sbin/stop-all.sh

启动:/apreduce运行状态

/home/hadoop/hadoop-2.6.5/sbin/mr-jobhistory-daemon.sh start historyserver

starting historyserver, logging to /home/hadoop/hadoop-2.2.0/logs/mapred-root-historyserver-master.out

查看HDFS分布式文件系统状态:

/home/hadoop/hadoop-2.6.5/bin/hdfs dfsadmin -report

查看文件块组成:  一个文件由哪些块组成

/home/hadoop/hadoop-2.2.0/bin/hdfs fsck / -files -blocks

 

Web查看HDFS:  

       http://192.168.1.201:50070

通过Web查看hadoop集群状态:  

http://192.168.1.201:8088 

 

附:hadoop中文文档http://hadoop.apache.org/docs/r1.0.4/cn/

 

原文地址:https://www.cnblogs.com/Vampire-MIn/p/13050082.html