hadoop分布式集群

分布式集群的实现

环境:

192.168.36.129   node1:NN,SNN,RM

 192.168.36.130  node2:DN,NM

192.168.36.132   node3:DN,NM

192.168.36.133   node4:DN,NM

配置java环境,每个节点时间同步,基于主机名互相通信,定义/etc/hosts 文件

 

如果需要通过master节点启动或停止集群,还需要在master节点上配置运行服务的用户(如hdfs和yarn)能以密钥认证的方式通过ssh远程连接只各节点

1、配置java环境 – – – – – 每个节点

# vim /etc/profile.d/java.sh
   export JAVA_HOME=/usr
# yum install java-1.8.0-openjdk-devel -y    
# java -version

2、基于主机名互相通信,定义/etc/hosts 文件 – – – – – 每个节点

192.168.36.129   node1   master

192.168.36.130  node2

192.168.36.132   node3

192.168.36.133   node4

3、创建用户(最好id相同)、密钥认证- – – – -每个节点

【 master 】

# groupadd hadoop

# useradd hadoop

# echo “queen” | passwd –stdin hadoop

【 其他节点 】

# useradd hadoop

# echo “queen” | passwd –stdin hadoop

 

【 master 】

# su - hadoop
$ ssh-keygen -t rsa -P ''
$ for i in 2 3 4; do ssh-copy-id -i .ssh/id_rsa.pub hadoop@node{$i}; done

说明:在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。
以本文中的三台机器为例,现在node1是主节点,他须要连接node2和node3。须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。

( 说明:$ssh-keygen  -t  rsa
这个命令将为hadoop上的用户hadoop生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/dbrg/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接复制过去就行.)

4、安装并配置hadoop

4.1 【 node1 】

# mkdir -pv /bdapps /data/hadoop/hdfs/{nn,snn,dn}
# chown -R hadoop:hadoop /data/hadoop/hdfs/
# wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
# tar xf hadoop-2.7.4.tar.gz -C /bdapps/
# cd /bdapps
# ln -sv hadoop-2.7.4 hadoop
# cd hadoop/
# vim /etc/profile.d/hadoop.sh                 
     export HADOOP_PREFIX=/bdapps/hadoop
     export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin
     export HADOOP_YARN_HOME=${HADOOP_PREFIX}
     export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX}
     export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
     export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
# ./etc/profile.d/hadoop.sh
# scp /etc/profile.d/hadoop.sh node2:/etc/profile.d/
# scp /etc/profile.d/hadoop.sh node3:/etc/profile.d/
# scp /etc/profile.d/hadoop.sh node4:/etc/profile.d/
# mkdir logs
# chmod g+w logs
# chown -R hadoop:hadoop ./*
# cd etc/hadoop
# vim core-site.xml        

   <configuration>
        <property>
             <name>fs.defaultFS</name>         
             <value>hdfs://master:8020</value>    
             <final>true</final>
        </property>
   </configuration>

# vim hdfs-site.xml     

 <configuration>

      <property>

             <name>dfs.replication</name>

             <value>2<value>       建议3个

      </propery>

       <property>

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

              <value>file:///data/hadoop/hdfs/nn</value>

       </propery>

        <property>

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

               <value>file:///data/hadoop/hdfs/dn</value>

 </propery>

 <property>

 <name>fs.checkpoint.dir</name>

 <value>file:///data/hadoop/hdfs/snn<value>

 </propery>

 <property>

 <name>fs.checkpoint.dir</name>

 <value>file:///data/hadoop/hdfs/snn<value>

 </propery>

 </configuration>
注意,如果需要其他用户对hdfs有写入权限,还需要添加

 <property>

     <name>dfs.premissions</name>       不做严格权限限制

     <value>false<value>

 </propery>

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

# vim mapred-site.xml    

<configuration>

  <property>

    <name>mapred.framwork.name</name>

    <value>yarn</value>

  </property>

</configuration>

# vim yarn-site.xml

<configuration>

  <property>

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

    <value>master:8032</value>

  </property>

  <property>

    <name>yarn.resourcemanager.scheduleraddress</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>

    <property>

    <name>yarn.nodemanager.aux-service</name> #辅助服务

    <value>mapreduce_shuffle</value>

  </property>

  <property>

    <name>yarn.nodemanager.auxservice.mapreduce_shuffle.class</name> #shuffle类

    <value>org.apache.hadoop.mapred.ShuffleHandler</value>

  </property>

    <property>

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

    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>

  </property>  

</configuration>
# vim slave
 node2
 node3
 node4


4.2 【 其他节点 】

# mkdir -pv /bdapps /data/hadoop/hdfs/{nn,snn,dn}
# chown -R hadoop:hadoop /data/hadoop/hdfs/
# tar xf hadoop-2.7.4.tar.gz -C /bdapps/
# cd /bdapps
# ln -sv hadoop-2.7.4 hadoop
# cd hadoop/
# mkdir logs
# chmod g+w logs
# chown -R hadoop:hadoop ./*
# cd etc/hadoop

【  node1 】

# su - hadoop
# scp /bdapps/hadoop/etc/hadoop/* node2:/bdapps/hadoop/etc/hadoop/
# scp /bdapps/hadoop/etc/hadoop/* node3:/bdapps/hadoop/etc/hadoop/
# scp /bdapps/hadoop/etc/hadoop/* node2:/bdapps/hadoop/etc/hadoop/

4.3  格式化并启动hadoop

【 node1 】
# su - hdfs
$ hadoop namenode -format

其中的“Storage directory /hadoop/temp/dfs/name has been successfully formatted”一行信息表明
对应的存储已经格式化成功。

在master节点上执行Hadoop的start-all.sh脚本即可实现启动整个集群。
$ start-dfs.sh 

验证
node2:# su - hadoop
       $ jps
node1:
$ hdfs dfs -mkdir /test

    drwxr-xr-x - hdfs supergroup            

$ hdfs -dfs -put /etc/fstab /test/fstab
$ hdfs dfs -lsR /   查看是否上传成功
$ hdfs dfs -cat /test/fstab

$ start-yarn.sh
验证
node2:
$ jps


4.4 测试

1)HDFS和YARN ResourceManager各自提供了一个Web接口,通过这些接口可检查HDFS集群以及YARN集群的相关状态信息

HDFS-NameNode     http://node1:50070

YARN-ResourceManager     http://node1:8088

 

5. HDFS常用操作

hadoopdfs -ls 列出HDFS下的文件
hadoop dfs -ls in 列出HDFS下某个文档中的文件
hadoop dfs -put test1.txt test 上传文件到指定目录并且重新命名,只有所有的DataNode都接收完数据才算成功
hadoop dfs -get in getin 从HDFS获取文件并且重新命名为getin,同put一样可操作文件也可操作目录
hadoop dfs -rmr out 删除指定文件从HDFS上
hadoop dfs -cat in/* 查看HDFS上in目录的内容
hadoop dfsadmin -report 查看HDFS的基本统计信息,结果如下
hadoop dfsadmin -safemode leave 退出安全模式
hadoop dfsadmin -safemode enter 进入安全模式

 

 

 

原创文章,作者:nene,如若转载,请注明出处:http://www.178linux.com/89610

(0)
上一篇 2017-12-08 22:15
下一篇 2017-12-09 12:27

相关推荐

  • bash编程之数组和字符串处理

    数组: 程序=指令+数据          指令:     数据:变量、文件 数组:存储过个元素的连续的内存空间; 变量:存储单个元素的内存空间; 数组名:整个数组只有一个名字; 数组索引:编号从0开始;   &nbsp…

    Linux干货 2016-08-24
  • DNS介绍及资源记录

    DNS查询 第一段:主机到运营商的DNS服务器(递归) 第二段:运营商的DNS再去解析(根域名服务器/),在一层一层的查找(迭代) DNS名称解析方式:名称–>IP,IP–>名称 注意:二者的名称空间非同一个空间,即不是一个数据库; 域: www.magedu.com. ftp.magedu.com. bbs.magedu…

    Linux干货 2017-02-12
  • Linux批量创建用户、passwd、shadow、组管理、group、gshadow、默认配置文件login.defs、切换用户su、提升权限(二)

    Linux批量创建用户、passwd、shadow、组管理、group、gshadow、默认配置文件login.defs、切换用户su、提升权限(二) Linux对于权限的管理非常完善,其强大的权限管理机制体现了它的魅力之处,让无数人为之操碎了心。Linux中的权限既能放也能收,既可以管理整个组的权限,也可以管理单个用户的权限,正是因为有了ACL的加入变得非…

    Linux干货 2016-08-06
  • MySQL与nfs的实验

    (1) 创建一个共享mydata,路径为/mysql/data,客户端1挂载至/mydata;而后客户端1主机安装mysql或mariadb,将数据目录设定为/mydata,要确保mysql服务能正常 运行,但数据目录位于samba server上; (2) 客户端2主机使用类似客户端1主机的方式挂载mydata共享至本地的/mydata目录,而后,直接安装…

    Linux干货 2016-10-30
  • RPM及YUM工具介绍及使用(下)

    YUM工具 YUM工作原理 YUM工具的出现就是为了解决rpm工具不能够自动解决软件包之间的依赖关系这一难题的。它的工作原理大致如下:YUM透过分析RPM的标头资料,根据各软件的相关性找出软件所依赖的软件列表,然后去下载速度最快的yum仓库中下载所有相关RPM软件包,然后完成相应软件的安装。同时yum工具和rpm工具一样,也可以提供对软件包的查询,安装、升级…

    Linux干货 2016-12-26
  • linux基础(第二天)

    一、终端:ternimal     COMMAND:tty     串行终端:/dev/ttyS#      物理终端:/dev/console 键盘显示器 单一用户     虚拟终端:/d…

    Linux干货 2016-07-26