hadoop基本知识及环境搭建(docker)

基本知识

核心组件:
	hdfs文件存储
	yarn资源任务调度
	mapreduce分布式运算变成框架,数据计算

    Hdfs: 
        NameNode
            Hdfs核心,master , 
            仅内存存储hdfs元素据, 如文件目录结构,块列表和位置
            对元数据的修改会在备份在fileSystemImage文件镜像中
            不持久化各个块信息(由DataNode上传)
            是hadoop集群单点故障
            通常会放在内存较大的节点
        DataNode
            存分块的数据,slave
            与NameNode保持通讯(如心跳,默认3秒),启动时发送自己节点上块信息
            通常会放在硬盘较大的节点

    Yarn : ResourceManager NodeManager

Docker上的操作

我是下载一个centos镜像 , 然后创建容器 , 安装基础软件 , 如:ssh ,jdk

然后再打包成新的镜像node , 都是docker命令 , 在另一篇文章里面

然后就可以创建容器 , 这里创建三个节点 , 分布如下
        Node1    NameNode    DataNode    ResourceManager
        Node2    DataNode    NodeManager    SecondaryNameNode
        Node3    DataNode    NodeManager

然后可以把node1的22端口映射到主机上的9922 , 然后就可以通过工具直接ssh连上主机的9922直接连上容器(非必需)

创建network , 创建容器可以指定ip , 也可以用docker默认的(非必需)

docker network create --subnet=10.10.10.0/16 hadoopnetwork

创建容器

用到的属性简单解释
    -p 是把容器的端口映射出来
    privileged=true和/usr/sbin/init 是给容器更多的权限
    --name 指定容器名
    --hostname 指定容器hostname
    --add-host 是容器IP映射出来,需要同时使用--network
命令:
    docker run -itd -p 9922:22 --privileged=true \
    --name=node1 --hostname=node1 \
    --network=hadoopnetwork --ip=10.10.10.1 \
    --add-host=node1:10.10.10.1 \
    --add-host=node2:10.10.10.2 \
    --add-host=node3:10.10.10.3 \
    node:latest /usr/sbin/init

    docker run -itd --privileged=true \
    --name=node2 --hostname=node2 \
    --network=hadoopnetwork --ip=10.10.10.2 \
    --add-host=node1:10.10.10.1 \
    --add-host=node2:10.10.10.2 \
    --add-host=node3:10.10.10.3 \
    node:latest /usr/sbin/init

    docker run -itd --privileged=true \
    --name=node3 --hostname=node3 \
    --network=hadoopnetwork --ip=10.10.10.3 \
    --add-host=node1:10.10.10.1 \
    --add-host=node2:10.10.10.2 \
    --add-host=node3:10.10.10.3 \
    node:latest /usr/sbin/init

操作容器

1同步时间
    #手动同步集群个机器时间
    date -s "2018-06-24 00:00:00"
    或者
    yum install ntpdate
    ntpdate cn.pool.ntp.org

2设置各个主机名
	centos6
		vi /etc/sysconfig/network
		NETWORKING=YES
		HOSTNAME=node1
	centos7
		hostnamectl set-hostname node1
		
3配置ip映射
	centos6
		vi /etc/hostdate
	centos7
		vi /etc/hosts
	172.17.0.2 node1
	172.17.0.3 node2
	172.17.0.4 node3

4配置ssh免密登陆
    生成免登陆密钥,会生成id_rsa(私钥) id_rsa.pub(公钥)
	    ssh-keygen -t rsa
    把公钥复制到免密登陆的机器上
	    ssh-copy-id node2
	
5配置防火墙,这里直接关了
    service iptables stop

6jdk(已经安装的可以忽略)
    卸载openjdk
	    rpm -qa | grep java
	    rpm -e --nodeps xxxxxxx
    上传1.8jdk,解压
    配置环境变量
	    vi /etc/profile
	    export JAVA_HOME=/../../jdk1.8..
	    export PATH=$PATH:$JAVA_HOME/bin
	    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
    刷新配置
	    source /etc/profile
	
7下载hadoop安装包,上传,解压
	1 修改hadoop-evn.sh
		vi hadoop../etc/hadoop/hadoop-evn.sh
		export JAVA_HOME=/../../jdk1.8..
	2 core-site.xml
		<property>
			<name>fs.defaultFS</name>
			<value>hdfs://node1:8020</value>
		</property>
		<property>
			<name>hadoop.tmp.dir</name>
			<value>/export/data/hddata</value>
		</property>
	3 hdfs-site.xml
		<!-- 指定HDFS副本的数量,默认3 -->
		<property>
			<name>dfs.replication</name>
			<value>2</value>
		</property>
		<property>
			<name>dfs.namenode.secondary.http-address</name>
			<value>node2:50090</value>
		</property>
	4 mapred-site.xml
		mv mapred-site.xml.template mapred-site.xml
		<!-- 指定mr运行时框架,指定yarn上,默认时local -->
		<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
		</property>
	5 yarn-site.xml
		<!-- yarn主节点(resourceManager) -->
		<property>
			<name>yarn.resourceManagermanager.hostname</name>
			<value>node1</value>
		</property>
		<!-- nodemanager上运行的附属服务 -->
		<property>
			<name>yarn.nodemanager.aux-services</name>
			<value>mapreduce_shuffle</value>
		</property>

8Slaves文件编辑从节点所在的主机名称
    Vi /home/hadoop-2.7.7/etc/hadoop/slaves
        node1
        node2
        node3

9将hadoop添加到环境变量
    vi /etc/profile
    export HADOOP_HOME=/home/hadoop-2.7.7
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

10复制hadoop到其他节点上
    scp -r /home/hadoop-2.7.7 root@node2:/home/
    scp -r /home/hadoop-2.7.7 root@node3:/home/

11复制/etc/profile到其他节点上
    scp -r /etc/profile root@node2:/etc/
    scp -r /etc/profile root@node3:/etc/

12格式化HDFS
    在hdfs主节点格式化
    hdfs namenode -format

13如果配置了etc/hadoop/slaves和免密登陆,则可以使用程序脚本启动
    Hdfs : /home/hadoop-2.7.7/sbin/start-dfs.sh
    Yarn : /home/hadoop-2.7.7/sbin/start-yarn.sh
    关闭:
    stop-dfs.sh  stop-yarn.sh
14查看是否启动各节点
    jps

安装后的简单操作hdfs

后面就可以去试试运行mapreduce了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值