Hadoop集群安装及简单配置

最近在整理资料的时候,看到刚开始学hadoop 的安装文档,本来写的很详细,每一步其实都截图,直接从文档中copy 过来所有的图片都没有了,排版样式都比较混乱了,   没办法编辑器老火,希望对大家有帮助!hadoop 每一个配置文件的很多参数详解 后面上传。

因为内容不止下面这一部分,后面上传一个文件吧


环境:CentOS6.6

hadoop版本:hadoop-2.7.3.tar.gz

安装目录:

root  root_71

IP规划

hadoop01: 192.168.1.71  (master ) hadoop-server-01  root root_71

hadoop02: 192.168.1.72  (slave01) hadoop-server-02root  root_72

hadoop03: 192.168.1.73  (slave02)hadoop-server-03 root  root_73

 

hadoop 集群中通讯端口众多 ,没有添加端口  一定要注意关闭防火墙

                                                                              

三台主机同时操作:

1.        配置主机名和ip 映射

2.        安装jdk

3.        创建hadoop用户

4.        配置ssh 免密登陆

5.        安装hadoop 

l  先配置好一台服务器,修改好hadoop相关文件, 然后scp 到其他两台服务器上

         # scp -r /home/hadoop/hadoop-2.7.3  hadoop02:/home/hadoop/

          如果第一台服务器 运行过,那么就会在我们配置的hadoop 临时目录tmp 中生   成一些数据,里面有些数据是用来标识当前hadoop 的相关信息,需要删除其他机器上的tmp 信息  ,不然无法组建集群

        # rm -rf /home/hadoop/hadoop-2.7.3/tmp

l  配置主节点上的salves

   如果不配置salves,单独去每台机器 也可以加入集群,但是比较麻烦,配        置主节点上的salves 后,在主节点上启动的时候会自动去启动从节点相关服务    进程

   vi salves

    加入所有节点

     hadoop01

     hadoop02

     hadoop03  

     这三台上面都会启动datanode 同时在主节点上启动namenode,如果只想在从节点上启动datanode ,不要加入hadoop01 即可

 

 

然后启动  每次都要sbin 目录比较麻烦 ,可以把这个目录配置当环境变量path 中,配置hadoop 环境变量

vi /etc/profile

export HADOOP_HOME=/home/hadoop/hadoop-2.7.3

在path 后面加上

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

 

让环境变量生效

source /etc/profile


     当前集群如果还想加入一台salve  只需要从一台服务器拷贝过去(或者重新配置),删除相关信息   修改主节点的salves 文件  使用手动启动方式handoop-daemon.sh 指定启动新服务器,就可以自动加入集群了

所以handoop 在线自动扩容非常简单,扩容的同时,集群服务不用停。

 

一.配置主机名和ip 映射

1.1配置hostname

192.168.1.71

# sudo vi/etc/sysconfig/network

  HOSTNAME=hadoop01

 

192.168.1.72

# sudo vi /etc/sysconfig/network

  HOSTNAME=hadoop02

 

192.168.1.73

# sudo vi/etc/sysconfig/network

  HOSTNAME=hadoop03

1.2 修改hosts文件

主节点

# sudo vi/etc/hosts

  127.0.0.1   localhost

  192.168.1.71 hadoop01

  192.168.1.72 hadoop02

  192.168.1.73 hadoop03

 

如果不配置这个 到时候ssh copy 会找不到主机名

 

从节点 至少需要把主节点的 加入  因为以后的配置 用到hadoop01  没有用ip

192.168.1.72

  127.0.0.1   localhost

  192.168.1.71 hadoop01

  192.168.1.72 hadoop02

  192.168.1.73 hadoop03

192.168.1.73

  127.0.0.1    localhost

  192.168.1.71 hadoop01

  192.168.1.72 hadoop02

  192.168.1.73 hadoop03

 

 

重启

# su root

# reboot

 

 

关闭防火墙

# service iptablesstop

 

or

# chkconfigiptables off   这样关闭后 防火墙就不会自动启动

二.创建用户

三台服务器 都要执行 用户名:hadoop 密码:root

# useradd hadoop

 更改hadoop用户的密码为root

# passwd hadoop

 

为了方便,将hadoop加入root用户组,也可以独创建一个用户组

操作方法:先以root身份登录,密码是root_71

# su root

# usermod -g roothadoop

 

执行完后hadoop即归属于root组了,查看

# id hadoop

查看输出验证一下,如果看到类似下面的输出:

uid=502(hadoop)gid=0(root) 组=0(root)

 

 

三.安装jdk

 不用openjdk

 

查看是否已经安装jdk

 # rpm -qa | grep jdk

 

创建目录

# mkdir/usr/local/java

 

上传jdk jdk1.7.0_45.tar.gz 到/usr/local/java 目录

 

安装jdk

# tar -zxvfjdk1.7.0_45.tar.gz

# mvjdk1.7.0_45  /usr/local/java/jdk1.7

 

使用root 用户配置环境变量

# su root

# vi /etc/profile

在文件最后面加入

exportJAVA_HOME=/usr/local/java/jdk1.7

exportJRE_HOME=/usr/local/java/jdk1.7/jre

exportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

exportPATH=$PATH:$JAVA_HOME/bin

使环境变量生效

# source/etc/profile

# java -version

 

 

四. 配置SSH 免密登录

hadoop工作时,各节点要相互通讯,正常情况下linux之间通讯要提供用户名、密码(目的是保证通讯安全),如果需要人工干预输入密码,显然不方便,做这一步的目的,是让各节点能自动通过安全认证,不影响正常通讯。

 

linux知识点  一般远程登录一台主机

   如:# ssh hadoop01    (hadoop01 是主机名) 

   退出:# exit

 

 

由发起方生成秘钥 ,也就是主动登录方,这里就是主节点操作:

简要版配置

192.168.1.71

1. 生成秘钥

# su hadoop

# cd /home/hadoop

# ssh-keygen

 

  后面全部enter

 

 其他参数默认,在hadoop 目录下会生成 .ssh 目录(是一个隐藏目录 看不到)里面会有二个文件id_rsa(私钥) , id_rsa.pub(公钥)

2.拷贝到其他需要免密登录的主机上去

   本机也是需要免密登录的。

  # ssh-copy-id hadoop01

 

 

hadoop02 是要免密登录的主机 的主机名

 

 # ssh-copy-id hadoop02

 

 # ssh-copy-id hadoop03

 

 

 

 

如果找不到主机名 就是上面的hosts 文件没有配置

或者以下错误  是没有先执行 ssh-copy-id hadoop01

 

 

3.测试 (ip 或者主机名)

# ssh hadoop02

       就不需要输入秘密了

# exit

 

 

 

五.安装hadoop

 先往主节点(192.168.1.71)上传 hadoop-2.7.3.tar.gz 到/home/hadoop

 

# suhadoop

# cd/home/hadoop

# tar -zxvf hadoop-2.7.3.tar.gz

 

hadoop环境变量(选配)每台机器都配置

# su root

# vi /etc/profile

  exportHADOOP_HOME=/home/hadoop/hadoop-2.7.3

  在path 后面加上

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

 

 

 

share 下面的 doc 可以删除掉

 

 

 

配置hadoop相关文件

可以在本地配置好后直接上传,当前配置信息及其简单,

一共需要修改七个文件:

 

$HADOOP_HOME/etc/hadoop/hadoop-env.sh

$HADOOP_HOME/etc/hadoop/yarn-env.sh

$HADOOP_HOME/etc/hadoop/core-site.xml

$HADOOP_HOME/etc/hadoop/hdfs-site.xml

$HADOOP_HOME/etc/hadoop/mapred-site.xml

$HADOOP_HOME/etc/hadoop/yarn-site.xml

$HADOOP_HOME/etc/hadoop/slaves

1. hadoop-env.sh

# vi /home/hadoop/hadoop-2.7.3/etc/hadoop/hadoop-env.sh

    找到下面这行的位置,改成(jdk目录位置,大家根据实际情况修改)     

 

    export JAVA_HOME=/usr/local/java/jdk1.7

 

   另外 hadoop-env.sh中 , 建议加上这句:(暂时不加)

    exportHADOOP_PREFIX=/home/hadoop/hadoop-2.7.3

 

2. yarn-env.sh (暂时不配置)

   # vi /home/hadoop/hadoop-2.7.3/etc/hadoop/yarn-env.sh

   export JAVA_HOME=/usr/java/jdk1.7.0_51

 

选配:

yarn 配置scheduler

yarn的Scheduler机制,由yarn-site.xml中的配置参数指定:

yarn.resourcemanager.scheduler.class

默认值为:

org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.CapacityScheduler

 

3、core-site.xml修改:

   # vi /home/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml

 

 

    

       fs.defaultFS                

       hdfs://hadoop01:9000

    

    

       hadoop.tmp.dir

       /home/hadoop/hadoop-2.7.3/tmp

    

 

    第一个参数:配置 hadoop 使用什么dfs , value 为hdsf地址是hadoop01 服务器上的文件系统

    第二个参数:hadoop 运行临时文件存放路径     

    注:tmp 目录如不存在,则先mkdir手动创建  测试发现可自动创建

 

window 上开发过程中找不到hadoop01

所有节点可以改为:

hdfs://192.168.1.71:9000

或者window 修改ip hostname 的映射

 

 

4、hdfs-site.xml

   # vi /home/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml

 

   

       

          dfs.replication

          1

      

      

        dfs.datanode.http.address

        192.168.1.71:50075

  

   

 

注:dfs.replication表示数据副本数,一般不大于datanode的节点数,默认是3

 

选配:以下内容 不配置 默认也是这样的

 

     dfs.datanode.ipc.address

      0.0.0.0:50020

   

hadoop web 访问地址

   

     dfs.datanode.http.address

     0.0.0.0:50075

  

 

 

 

 

5、mapred-site.xml

 

 

当前只有一个mared-site.xml.template 文件

 

# cp mapred-site.xml.templatemapred-site.xml

# vi /home/hadoop/hadoop-2.7.3/etc/hadoop/mapred-site.xml

 

 

   mapreduce.framework.name

    yarn

 

 

配置mapreduce 在yarn平台上执行, hadoop中yarn管理和分配资源

 

6.yarn-site.xml

 

   # vi /home/hadoop/hadoop-2.7.3/etc/hadoop/yarn-site.xml

   

      yarn.resourcemanager.hosename

     hadoop01

  

  

    yarn.nodemanager.aux-services

    mapreduce_shuffle

  

 

hadoop01  可以改成 192.168.1.71

全部配置成ip 便于其他地方访问,但是不建议 还是用主机名,因为主机ip 一旦变换 所有的配置都需要修改

resourcemanager是yarn 的主进程,nodemangger是从节点进程    

 

加入以下配置 ,访问yarnweb 界面正常  

 

     

            yarn.resourcemanager.address

    192.168.1.71:8032

 

      

            yarn.resourcemanager.scheduler.address

    192.168.1.71:8030

 

    yarn.resourcemanager.resource-tracker.address

    192.168.1.71:8031

 

 

7.savles 

当前只是把本机加入到从节点中, 等把hadoop 拷贝到从节点  需要修改

#cp /home/hadoop/hadoop-2.7.3/etc/hadoop/slaves/home/hadoop/hadoop-2.7.3/etc/hadoop/slaves.bak 

 

# vi /home/hadoop/hadoop-2.7.3/etc/hadoop/slaves

  hadoop01

只是加入了本机

 

当前hadoop 已经配置完成,可以先测试下本机是否启动成功,启动可以参考第六点启动脚本

 

8. 从主节点拷贝hadoop 文件到两个从节点上

 因为配置了ssh免密登录 所以不需要输入密码

# scp -r/home/hadoop/hadoop-2.7.3 hadoop02:/home/hadoop/

# scp -r /home/hadoop/hadoop-2.7.3  hadoop03:/home/hadoop/

 

如果没有配置ssh免密登录

如下操作: 需要加上用户名

# scp -r/home/hadoop/hadoop-2.7.3  hadoop@hadoop02:/home/hadoop/

# scp -r /home/hadoop/hadoop-2.7.3  hadoop@hadoop03:/home/hadoop/

 

注:如果第一台服务器运行过,那么就会在配置的hadoop 临时目录tmp 中生成一些数据,里面有些数据是用来标识当前hadoop的相关信息,需要删除其他机器上的tmp 信息  ,不然无法组建集群

 

192.168.1.72

# rm -rf /home/hadoop/hadoop-2.7.3/tmp

 rm -rf /home/hadoop/hadoop-2.7.3/logs

 

192.168.1.73

# rm -rf /home/hadoop/hadoop-2.7.3/tmp

  rm -rf /home/hadoop/hadoop-2.7.3/logs

 

修改主节点salves 配置文件

加入从节点信息,如果不想本机上启动datanode 就不加入hadoop01

# vi /home/hadoop/hadoop-2.7.3/etc/hadoop/slaves

  hadoop01

  hadoop02             

  hadoop03

 

加入此从节点后在主节点上启动 ,hadoop 会自动启动从节点上的相关进程

 

 

注:两个从节点修改

hdfs-site.xml      

   # vi /home/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml

 

   

       

          dfs.replication

          1

      

     

        dfs.datanode.http.address

        0.0.0.0:50075

  

   

 

 

 

 

六.启动与停止hadoop

hadoop 里面三个重要组成部分 hdsfmapreduce yarn,需要启动hdsf 和yarn

mapredue 只是开发好后,上传后在yarn 上去执行就行

同时hdsf 和yarn 是没有耦合在一起的两个任意一个启动与不启动  相互不影响 

1.格式化namenode  (格式化hdsf )

     # cd /home/hadoop/hadoop-2.7.3/bin

     老版本如下格式化

     # ./hadoop namenode –format      

     现在使用如下格式化:

      #  ./hdfs namenode -format

 

 

查看tmp 文件下面的文件

 

注:如果是第二次格式化  请先删除tmp 目录不然会引发错误

2.手动启动

    # cd /home/hadoop/hadoop-2.7.3/sbin

2.1启动namenode

     # ./hadoop-daemon.shstart namenode

     查看namenode 进程 是否启动成功

     # jps

   

2.2 启动datanode 和sencondarynamenode

    # ./hadoop-daemon.sh start datanode

    # jps

    # ./hadoop-daemon.sh start secondarynamenode

    # jps

    查看进程

    # netstat -nltp

 

   9000 :内部通讯端口

   50070:web 页面访问端口

    如果打不开下面地址  请关闭防火墙

    http://192.168.1.71:50070

 

 

2.3启动yarn 里面相关的服务进程

   yarn 主进程

   # ./yarn-daemon.shstart resourcemanager

  

   # ./yarn-daemon.sh start nodemanager

   # jps

 

 

 

 

3.自动化脚本启动
3.1 启动hdfs

  # cd /home/handoop/hadoop-2.7.3/sbin

  # ./start-dfs.sh

 

3.2 启动yarn

   # ./start-yarn.sh

 

 

 

 以上的启动可以使用一个命令全部启动

 # ./start-all.sh

 

4.停止hadoop

# cd/home/handoop/hadoop-2.7.3/sbin 

# ./stop-dfs.sh

# ./stop-yarn.sh

 

或者用

 #  ./stop-all.sh

 

 

 

 

七. hadoop集群动态扩容

当前集群如果想加入一个salve节点, 只需要从一台服务器拷贝过去(或者重新安装),删除相关信息,修改主节点的salves 文件,使用手动启动方式 handoop-daemon.sh 指定启动新服务器, 就可以自动加入集群了

所以handoop 在线自动扩容非常简单,扩容的同时,集群服务不用停

 

如果要加入datanode 只需要在新的从节点启动 datanode

# cd /home/hadoop/hadoop-2.7.3/sbin

# ./hadoop-daemon.shstart datanode 就可以加入集群中了


你可能感兴趣的:(hadoop)