Hadoop集群搭建

目录

1.什么是hadoop

2.HDFS整体运作机制

3.搭建HDFS分布式集群

3.1.需要准备多台Linux服务器

3.2安装,配置,启动HDFS

3.2.1上传hadoop安装包到各服务器

3.2.2修改配置文件

3.33启动HDFS

hdfs命令行客户端的所有命令列表


1.什么是hadoop

hadoop中有3个核心模块:

  1. HDFS(分布式文件系统):将文件分布式存储在多台服务器上
  2. MAPREDUCE(分布式运算编程框架):多台服务器并行运算
  3. YARN(分布式资源调度平台):帮用户调度大量的MAPREDUCE程序,合理分配资源

2.HDFS整体运作机制

HDFS(分布式文件系统):

一个HDFS系统,是由一个运行namenode的服务器和若干运行datanode的服务器组成
 

http://naotu.baidu.com/file/453b8cdf707ee86f9f54f20dae94e7ac?token=a40bb47082ae1f92

 

3.搭建HDFS分布式集群

3.1.需要准备多台Linux服务器

1准备1+N台服务器:1个namenode节点和N个datanode节点 

2修改服务器ip修改为固定的 方法自行百度

3修改etc下的hosts 将ip与服务器的名称对应上(相当于域名解析)(域名映射配置)

4关闭防火墙

关闭防火墙:service iptables stop 

关闭防火墙自启: chkconfig iptables off

6安装jdk(自行百度)

(2-6)每台服务器都需要

 

3.2安装,配置,启动HDFS

3.2.1上传hadoop安装包到各服务器

3.2.2修改配置文件

1.解压至任意位置  演示为root目录下

hadoop的配置文件在:/root/hdoop**.**/etc/hadoop/

2.修改hadoop-env.sh(配置java环境:因为hadoop是java程序需要java环境)

export JAVA_HOME = 你的java jdk目录 (javahome)

3.修改core-site.xml (说明你的 namenode在什么地方)

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://vm01:9000</value>
    </property>
</configuration>

说明:格式为固定写法,name为固定,value中vm01为你想要运行namenode服务的服务器的地址

4.修改hdfs-site.xml (说明你的文件分割记录放在哪个目录,分割的文件放在哪个目录)

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/root/dfs/name</value>
    </property>
 
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/root/dfs/data</value>
    </property>

    <!-- secondary namenode放到非namenode上 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>vm02:50090</value>
    </property>
</configuration>

说明:

        dfs.namenode.name.dir中的value是指定文件分割记录放在哪个目录
        dfs.datanode.data.dir中的value是指定文件的分块放在哪个目录
        dfs.namenode.secondary.http-address中的valuevm02是指服务器,50090是端口号(最好不要改)

5.将这些修改过的配置文件复制到其他服务器上(每台服务器都一样)

3.33启动HDFS

要想直接运行Hadoop命令  先要配置环境变量

vi/etc/profile

文件尾部追加
export
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export
HADOOP_HOME=/root/hadoop/hadoop-2.8.5
export
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

 

1.初始化namenode的源数据目录

在vm01上执行初始化namenode命令

hadoop namenode -format

这个时候hdfs已经初步搭建完成

在vm01上可以启动namenode和datanode
在其他服务器上可以穹顶datanode

启动namenode命令
hadoop-daemon.sh start namenode
启动datanode命令
hadoop-daemon.sh start datanode

此时可以在window浏览器中访问hdfs提供的web端口:50070

http://192.168.1.101:50070 (运行namenode的服务器的ip)

 

 

但是要是有N台datanode那么是不是要在N台上面输入命令启动datanode呢?
当然不是,可以使用HDFS提供的批量启动脚本来执行启动

1.配置ssh免密登录

在主服务器(vm01)执行
ssh-keygen(一顿回车)

ssh-copy-id vm01(第一次需要输入密码)

ssh-copy-id vm0*  (依次在主服务器执行以下命令vm02 03 04......)

······

······

如果遇到错误可能是无root登录权限  那么就修改
 /etc/ssh/sshd_config文件中 添加一条 PermitRootLogin yes
然后重启ssh服务   sudo service ssh restart

如果还是有错误可能是没有设置root用户密码
那么在root用户下 sudo su
输入命令 sudo passwd  设置密码

这时候就可以免密登录了

这时候就可以在主服务器上执行:
    start-dfs.sh 来自动启动整个集群
    如果要停止,则用脚本:stop-dfs.sh(如果提示没有找到命令  那就是环境变量没有配置好,可以在hadoop目录下面的sbin下用  ./ start-dfs.sh或./stop-dfs.sh来执行)

 

可以自行更改HDFS的分块以及副本数量配置

文件的切块大小和存储的副本数量,都是由客户端决定
所谓的由客户端决定,是通过配置参数来定的
hdfs的客户端会读以下两个参数,来决定切块大小、副本数量:
切块大小的参数: dfs.blocksize
副本数量的参数: dfs.replication
上面两个参数应该配置在客户端机器的hadoop目录中的hdfs-site.xml中配置(每台都需要改)

<property>
    <name>dfs.blocksize</name>
    <value>64m</value>
</property>

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>

hdfs命令行客户端的所有命令列表

Usage: hadoop fs [generic options]
        [-appendToFile <localsrc> ... <dst>]
        [-cat [-ignoreCrc] <src> ...]
        [-checksum <src> ...]
        [-chgrp [-R] GROUP PATH...]
        [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
        [-chown [-R] [OWNER][:[GROUP]] PATH...]
        [-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
        [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...]
        [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]
        [-createSnapshot <snapshotDir> [<snapshotName>]]
        [-deleteSnapshot <snapshotDir> <snapshotName>]
        [-df [-h] [<path> ...]]
        [-du [-s] [-h] [-x] <path> ...]
        [-expunge]
        [-find <path> ... <expression> ...]
        [-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-getfacl [-R] <path>]
        [-getfattr [-R] {-n name | -d} [-e en] <path>]
        [-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
        [-help [cmd ...]]
        [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
        [-mkdir [-p] <path> ...]
        [-moveFromLocal <localsrc> ... <dst>]
        [-moveToLocal <src> <localdst>]
        [-mv <src> ... <dst>]
        [-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
        [-renameSnapshot <snapshotDir> <oldName> <newName>]
        [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
        [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
        [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
        [-setfattr {-n name [-v value] | -x name} <path>]
        [-setrep [-R] [-w] <rep> <path> ...]
        [-stat [format] <path> ...]
        [-tail [-f] <file>]
        [-test -[defsz] <path>]
        [-text [-ignoreCrc] <src> ...]
        [-touchz <path> ...]
        [-truncate [-w] <length> <path> ...]
        [-usage [cmd ...]]



 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值