Hadoop部署(v1与v2)

注:通过虚拟机,我对v1,v2都进行了部署,以此比较两个版本的异同

集群部署

Hadoop安装分为三种不同模式:
本地模式:hadoop在运行时,不使用hdfs,而是使用linux操作系统的文件系统.(默认hadoop就是本地模式)
伪分布模式:在一个节点上运行hadoop(指的是hadoop的各个进程都是在我们的一个节点上都是开启的).hadoop的"运行机制"和集群模式相似,
集群模式:在生产中真正使用的,hadoop的各个进程运行在集群的很多节点上

我们这里模拟的是集群开发环境的部署。

因为是在笔记本上做的实验,所以这里我选择三台机器安装,下面是各个节点的分配:

192.168.1.10    NAMENODE    

角色:NameNode,JobTracker,TaskTracker,DataNode     

192.168.1.11    DATANODE1

角色:SecondaryNameNode,TaskTracker,DataNode     

192.168.1.12    DATANODE2

角色:TaskTracker,DataNode

 

  NameNode和JobTracker在实际的生产中各自是一台机器,因为NameNode在运行时时需要消耗大量内存的,JobTracker接收用户的请求,对用户cpu要求稍微高一点,作为和我们用户直接做接口的这种进程,最好独立,保证资源的充分.
准备软件

虚拟机VMware

Linux Centos6.5 32位

jdk-7u7-linux-i586tar.gz

hadoop-1.1.2.tar.gz

配置静态ip地址

  内网ip:我们的各个节点通过一台交换机或者一个路由在一起的.
  外网:虽然两台机器是在一起的,但是他们走的外网网络的话,它是从你的内网走出去到了外网,在进入到你的内网,再到另一台机器.
  外网配置后特别慢,内网相对比较快.

DHCP动态的不利于我们去指定一个节点,静态管理还是比较方便的.
(1)使用vi编辑文件

vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static  

IPADDR=192.168.1.10

NETMASK=255.255.255.0  

GATEWAY=192.168.1.1  

DNS1=192.168.1.1  

(2)执行service network restart重启网卡设置
3)执行命令ifconfig查看配置结果是否正确

设置hostname
主机名:ip的一个代称,在当前网络环境中是有效的
(1)使用vi编辑/etc/sysconfig/network

HOSTNAME的值改为NAMENODE,保存退出.(重启之后永久生效)
(2)执行hostname NAMENODE,在当前环境中立即生效
(3)执行命令hostname查看设置结果

绑定ip与hostname
编辑文件/etc/hosts,增加ip与主机名的映射信息

192.168.1.10    NAMENODE    

192.168.1.11    DATANODE1

192.168.1.12    DATANODE2

 

 

 

关闭防火墙
用来拦截外部请求的,对于某个ip来访问某个端口等待,防火墙都会做拦截,关闭防火墙的目的,就是为了让我们的程序能够更容易的安装,部署.
工作中hadoop集群内网的防火墙也是可以关闭的.内部的Hadoop集群不对外进行通信  

(1)执行命令service iptables stop关闭防火墙
(2)执行命令service iptables status查看防火墙是否正在运行.

关闭防火墙的自动运行:
执行命令chkconfig iptables off

部署SSH(secure shell)免密码登陆
  hadoop主节点启动的时候,会在我们的从节点启动进程,通过ssh 登陆之后,在他上面执行脚本之后登陆的
  ssh是一个加密的通信方式,这种加密是非对称加密,指的是我们有公钥和密钥这两个东西
(1)执行命令 ssh-keygen -t rsa 产生公钥私钥文件,产生的文件位于~/.ssh目录下

在执行之前,先cd到~下查看是否有.ssh,如果没有,通过命令mkdir ~/.ssh创建文件夹,通过ls-a查看是否创建成功
(2)执行命令ssh-copy-id -i DATANODE1复制公钥文件到对方DATANODE1authorized_keys中去.

同理,在这一步之前,DATANODE1应该创建好.ssh文件夹

这一步会先让你输入DATANODE1的密码,然后再让你设置ssh的登录密码,直接enter键默认为无密码,并会让你再次输入。
(3)ssh DATANODE1,就可以实现真正的密码登录了

DATANODE2同理。
  只需要实现主节点到从节点的免密码登陆即可,不必要实现从节点到从节点的免密码登录.(因为我们的hadoop是主节点去启动或关闭从节点的进程,去调用脚本,我们的从节点不会调用主节点的脚本,所以ssh只需要主节点到从节点。

想要退出返回到主节点,输入exit 或者logout都可以。
安装jdk

将文件jdk-7u7-linux-i586.tar.gz上传到NAMENODE

执行mkdir /usr/local/java创建java文件夹

然后将下载压缩包拷贝到java文件夹中

进入jdk源码包所在目录

cp jdk-7u7-linux-i586.tar.gz /usr/local/java

然后进入java目录:

cd /usr/local/java

解压压缩包:

tar -zxvf jdk-7u7-linux-i586.tar.gz

可以把压缩包删除:

rm -f jdk-7u7-linux-i586.tar.gz

vim /etc/profile

进入插入状态

在文本的最后一行粘贴如下:

注意JAVA_HOME=/usr/local/java/jdk1.7.0_07  就是你自己的目录

#java environment
export JAVA_HOME=/usr/local/java/jdk1.7.0_07
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

让刚刚设置的环境变量生效

键入source /etc/profile

检查是否配置成功

键入:

java -version

javac

以上步骤分别在DATANODE1,DATANODE2节点上执行配置.

部署hadoop

(1)在hadoop1上执行命令 /mnt/software/hadoop-1.1.2.tar.gz ~ 复制hadoop压缩包到home目录.
(2)在hadoop1上执行命令tar -zxvf ~/hadoop-1.1.2.tar.gz 进行解压缩
mv hadoop-1.1.2 hadoop
(3)在hadoop1上执行命令vi /etc/profile 设置环境变量,增加了内容如下:

export HADOOP_HOME_WARN_SUPPRESS=1

export HADOOP_HOME=/usr/local/hadoop     

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

保存退出     

执行source /etc/profile  

为了防止在启动的过程程序抛警告"Warning: $HADOOP_HOME is deprecated",加入如下代码:
export HADOOP_HOME_WARN_SUPPRESS=1

(4)编辑配置文件

<1>conf/hadoop-env.sh

修改第9行内容 export JAVA_HOME=/usr/local/jdk

 

<2>conf/core-site.xml

 <property>
  <name>fs.default.name</name>
   <value>hdfs://namenode:9000</value>
   <description>change your own hostname</description>
   </property>
   <property>
   <name>hadoop.tmp.dir</name>
   <value>/usr/local/hadoop/tmp</value>
 </property>

 <3>conf/hdfs-site.xml

<configuration>
            <property>
                <name>dfs.http.address</name>
                <value>0.0.0.0:50070</value>
            </property>
            <property>
                <name>dfs.secondary.http.address</name>
                <value>0.0.0.0:0</value>
            </property>
            <property>
                <name>dfs.datanode.address</name>
                <value>0.0.0.0:0</value>
            </property>
            <property>
                <name>dfs.datanode.ipc.address</name>
                <value>0.0.0.0:0</value>
            </property>
            <property>
                <name>dfs.datanode.http.address</name>
                <value>0.0.0.0:0</value>
            </property>
            <property>
                <name>dfs.replication</name>
                <value>3</value>
            </property>
            <property>
                <name>dfs.permissions</name>
                <value>false</value>
            </property>
        </configuration>

<4>conf/mapred-site.xml

<configuration>
            <property>
                <name>mapred.job.tracker</name>
                <value>hdfs://NAMENODE:8000</value>
            </property>
            <property>
                <name>mapred.job.tracker.http.address</name>
                <value>0.0.0.0:50030</value>
            </property>
            <property>
                <name>mapred.task.tracker.http.address</name>
                <value>0.0.0.0:0</value>
            </property>
        </configuration>

<5>修改masters文件(保存SecondaryNameNode)

DATANODE1

<6>修改slaves文件(指定从节点的位置)

DATANODE2

(5)在NAMENODE上将配置好的/usr/local/hadoop分别复制到其他节点

  scp -r hadoop* DATANODE1:/usr/local/

       scp -r hadoop* DATANODE2:/usr/local/
   scp /etc/profile DATANODE1:/etc/
   scp /etc/profile DATANODE:/etc/

分别在DATANODE1,DATANODE2上执行source /etc/profile

(6) NAMENODE节点执行hadoop namenode -format 进行格式化
(7)在NAMENODE节点上执行命令start-all.sh 启动集群
(8)检查是否启动成功:执行jps命令 浏览器访问NAMENODE:50070来访问hdfs

NAMENODE:50030来访问jobtracker
hadoop/logs 中查看启动日志 .out是临时文件
查看端口:netstat -ant | grep 9000
查看对应的进程号:ps -ef | grep 9000

杀死进程 kill -9 9000

关闭集群的方式:stop-all.sh 

以上的配置将NameNode和JobTracker都部署在一台机器上了,但是我们在生产中是分别将NameNode和JobTracker分别部署在不同的机器上的,所以我们做如下修改:

我们假设NameNode在hadoop1上,JobTracker在DATANODE1

(1)NameNode所在节点是通过core-site.xml中的fs.default.name的值体现出来的.
  这里不需要修改,还是hdfs://NAMENODE:9000
(2)JobTracker所在节点是通过mapred-site.xml的mapred.job.tracker的值体现的
  将值修改为hdfs://DATANODE1:8000

(3)重新启动集群:

启动时不要使用start-all.sh,而应该使用hadoop-daemon.sh start ***命令启动:
NAMENODE上执行命令hadoop-daemon.sh start namenode
DATANODE1上执行命令hadoop-daemon.sh start jobtracker
DATANODE1上执行命令hadoop-daemon.sh start secondarynamenode
NAMENODE上执行命令hadoop-daemons.sh start datanode
NAMENNODE上执行命令hadoop-daemons.sh start tasktracker

关闭集群:
按照启动相反的操作,将start改为stop即可.

 

 

 

 

补充:V2的安装与V1没有太多区别,在这里补充一下hadoopv2的设置过程;

 

1./home/hadoop/hadoop-2.7.3/etc/hadoop目录下的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://NAMENODE:9000</value>
                        </property></configuration>                        

 2.配置/home/hadoop/hadoop-2.7.3/etc/hadoop目录下的hdfs-site.xml

 

<configuration>

                        <property>
                             <name>dfs.replication</name>
                             <value>1</value>
                        </property>
<property>
  <name>dfs.http.address</name>
  <value>0.0.0.0:50070</value>
</property>
                        <property>
                             <name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
                        </property>
                        <property>
                             <name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
                        </property>
        <property>
                <name>dfs.secondary.http.address</name>
                <value>DATANODE1:50090</value>
        </property>
   <property>
               <name>dfs.webhdfs.enabled</name>
               <value>true</value>
    </property>
</configuration>

 3.配置/home/hadoop/hadoop-2.7.3/etc/hadoop目录下的mapred-site.xml

<configuration>
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
          <final>true</final>
    </property>
  <property>
     <name>mapreduce.jobtracker.http.address</name>
     <value>master.hadoop:50030</value>
  </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master.hadoop:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master.hadoop:19888</value>
    </property>
    <property>
        <name>mapred.job.tracker</name>
        <value>http://master.hadoop:9001</value>
    </property>
</configuration>

 4.配置/home/hadoop/hadoop-2.7.0/etc/hadoop目录下的yarn-site.xml

<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>127.0.0.1:8032</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.scheduler.address</name> 
        <value>127.0.0.1:8030</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.resource-tracker.address</name> 
        <value>127.0.0.1:8031</value> 
    </property> 
</configuration>

 

5.配置/home/hadoop/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME

取消注释,设置为export JAVA_HOME=/home/java/jdk1.7.0_79

 

6.配置/home/hadoop/etc/hadoop目录下的slaves,删除默认的localhost,增加2个slave节点:

DATANODE1

DATANODE2

7.V2版本里,还需要执行命令vi /etc/profile 设置环境变量主要是将bin改成sbin,不然的话就会提示no bash。

     export HADOOP_HOME_WARN_SUPPRESS=1
     export HADOOP_HOME=/usr/local/hadoop     export PATH=.:$HADOOP_HOME/sbin:$PATH 

运行结果:

 

 http://namenode:8088/

参考博客:

https://www.cnblogs.com/xuwujing/p/7856061.html

https://www.cnblogs.com/xiaolong1032/category/667553.html

 

posted @ 2020-05-23 21:53  徐不疾  阅读(356)  评论(0)    收藏  举报