hadoop入门学习

 

1.hadoop1.0,2.0架构演进(都说3.0不稳定,以后再看)

 

 

2.环境搭建(直接拉取阿里的docker镜像搭建)

环境准备:linux系统(物理机或者虚拟机皆可),笔者是物理机Cenos7,请在root权限操作

a) 获取镜像

从阿里拉去hadoop镜像 :

docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop

验证是否下载成功:可以查看到镜像

docker images

b)创建3个容器,

需要开三个终端,每个运行一个容器

创建Master namenode节点

docker run -i -t --name Master -h Master  -p 50070:50070 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash

创建Slave1 datanode节点

docker run -i -t --name Slave1 -h Slave1 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash

创建Slave2 datanode节点

docker run -i -t --name Slave2 -h Slave2 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash

c)ssh相互通信配置

每个节点执行一下步骤:

首先将ssh打开(坑点,踩了)

/etc/init.d/ssh start

rsa生成公钥私钥,overwrite哪里y就行

ssh-keygen -t rsa

然后进入到/root/.ssh目录下操作

cd /root/.ssh

将三个节点的公钥里面的内容都复制到Master 中的authorized_keys中,然后从Master节点copy到另外两个节点(可直接覆盖文件,也可以copy内容覆盖)

最后的效果是三个节点中的authorized_keys中内容是一样的,是三个节点中的公钥之和,其实就是相互免密。

 

d)将ip地址映射到主机名称

ip addr查看三个节点各自的ip,然后修改每个节点的/etc/hosts文件,为其添加其他两个节点的ip主机名映射

vim /etc/hosts

#文件的最后几行
172.17.0.2    Master
172.17.0.3    Slave1
172.17.0.4    Slave2

验证ssh免密登陆是否正常

ssh Slave1

登陆进去则成功,如果需要密码或者拒绝登陆,则重新配置

执行exit命令退出Slave1,返回到Master节点下

 

e)配置hadoop的5个配置文件

进入到hadoop安装目录

笔者目录

cd /opt/tools/hadoop/etc/hadoop/

五个文件是hadoop-env.sh, core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml 

hadoop-env.sh:修改有关java的环境,这里只修改jdk的环境变量

#如果已经是${JAVA_HOME},可以不用修改
export JAVA_HOME=/opt/tools/jdk1.8.0_77
#修改core-site.xml
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://Master:9000</value>
  </property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/hadoop/tmp</value>
</property>
</configuration>
#修改hdfs-site.xml
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/hadoop/data</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/hadoop/name</value>
  </property>
</configuration>

 

#修改mapred-site.xml
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

 

#修改yarn-site.xml
<configuration>
 <property>
<name>yarn.resourcemanager.address</name>
 <value>Master:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</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-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>
</configuration>

修改slaves文件中内容如下

#替换localhost为一下内容
Master
Slave1
Slave2

根节点创建相关目录,并和配置文件一起分发到数据节点

#所以我这里datanode有3个,每个节点各一个,namenode只有一个,在Master上
#相关目录最好需要手动创建,然后分发给其他节点上
mkdir /hadoop/data
mkdir /hadoop/name
mkdir /hadoop/tmp
scp -r hadoop root@Slave1:/
scp -r hadoop root@Slave2:/

然后将这些文件通过scp发送到Slave1节点上覆盖原来的文件:
scp core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml Slave1:/opt/tools/hadoop/etc/hadoop/

发送到各个Slave2节点上覆盖原来的文件:
scp core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml Slave2:/opt/tools/hadoop/etc/hadoop/

f)运行hadoop

初始化hadoop

#切记切记!!如果需要重新格式化,则需要删除/hadoop/tmp文件,否则会运行出错 !!
hadoop namenode -format

进入到hadoop/sbin目录下运行./start-all.sh命令,启动hadoop集群

cd /opt/tools/hadoop/sbin
./start-all.sh

查看个节点信息

hadoop dfsadmin -report

jps查看各个节点进程

执行计算,直接拿来。例如单词统计:

#hsfs上创建一个文件夹:
hadoop fs -mkdir /input

#现在hsfs上创建一个文件夹:
hadoop fs -ls /


#上传文件到hdfs,这里直接将当前目录的README.txt进行上传
hadoop fs -put README.txt /input/

#在/opt/tools/hadoop/share/hadoop/mapreduce目录中执行:
hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output

可以查看一下统计结果:
hadoop fs -cat /output/part-r-00000 

 

 

 

参考连接:

1.https://blog.csdn.net/Leafage_M/article/details/72633408

2.https://www.jianshu.com/p/30604c820e9d

3.https://blog.csdn.net/wh_19910525/article/details/7433164

 

 

 

 

上一级->知识进阶篇:大数据,数据挖掘,并行计算,人工智能

首页->目录大纲

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值