hadoop搭建入门(如何在Linux下搭建hadoop集群环境 小残’s Blog)

本文目录
如何在Linux下搭建hadoop集群环境 小残’s Blog
前期准备
l 两台linux虚拟机(本文使用redhat5,IP分别为 IP1、IP2)
l JDK环境(本文使用jdk1.6,网上很多配置方法,本文省略)
l Hadoop安装包(本文使用Hadoop1.0.4)
搭建目标
210作为主机和节点机,211作为节点机。
搭建步骤
1修改hosts文件
在/etc/hosts中增加:
IP1 hadoop1
IP2 hadoop2
2 实现ssh无密码登陆
2.1 主机(master)无密码本机登陆
ssh-keygen -t dsa -P ’’ -f ~/.ssh/id_dsa
直接回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。
这两个是成对出现,类似钥匙和锁。
再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_key s文件 ) :
cat ~/.ssh/id_dsa.pub 》》 ~/.ssh/authorized_keys
ssh localhost hostname
还是要输入密码,一般这种情况都是因为目录或文件的权限问题,看看系统日志,确实是权限问题
.ssh下的authorized_keys权限为600,其父目录和祖父目录应为755
2.2 无密码登陆节点机(slave)
slave上执行:
ssh-keygen -t dsa -P ’’ -f ~/.ssh/id_dsa
生成.ssh目录。
将master上的authorized_keys复制到slave上:
scp authorized_keys hadoop2:~/.ssh/
实验:在master上执行
ssh hadoop2
实现无密码登陆。
3 配置Hadoop
3.1拷贝hadoop
将hadoop-1.0.4.tar.gz ,拷贝到usr/local 文件夹下,然后解压。
解压命令:
tar –zxvf hadoop-1.0.4.tar.gz
3.2查看 cat /etc/hosts
IP1 hadoop1
IP2 hadoop2
3.3 配置 conf/masters 和 conf/slaves
conf/masters:
1
IP1
conf/slaves:
1
2
IP2
IP2
3.4 配置 conf/hadoop-env.sh
加入
1
export JAVA_HOME=/home/elvis/soft/jdk1.7.0_17
3.5 配置 conf/core-site.xml
1
2
3
4
《property》
《name》fs.default.name《/name》
《value》hdfs://IP1:9000《/value》
《/property》
3.6 配置 conf/hdfs-site.xml
加入
《property》
***隐藏网址***
《value》IP1:50070《/value》
《/property》
《property》
《name》dfs.name.dir《/name》
《value》/usr/local/hadoop/namenode《/value》
《/property》
《property》
《name》dfs.data.dir《/name》
《value》/usr/local/hadoop/data《/value》
《/property》
《property》
《name》dfs.replication《/name》
《value》2《/value》
《/property》
3.7 配置conf/mapred-site.xml
加入
《property》
《name》mapred.job.tracker《/name》
《value》192.168.1.50:8012《/value》
《/property》
3.8 建立相关的目录
1
/usr/local/hadoop/ //hadoop数据和namenode目录
【注意】只创建到hadoop目录即可,不要手动创建data和namenode目录。
其他节点机也同样建立该目录。
3.9 拷贝hadoop文件到其他节点机
将hadoop文件远程copy到其他节点(这样前面的配置就都映射到了其他节点上),
命令:
1
scp -r hadoop-1.0.4 IP2:/usr/local/
3.10 格式化Active master
命令:
bin/hadoop namenode -format
3.11 启动集群 ./start-all.sh
现在集群启动起来了,看一下,命令:
1
bin/hadoop dfsadmin -report
2个datanode,打开web看一下
浏览器输入:IP1:50070
打完收工,集群安装完成!
hadoop pipeline 搭建
在互联网公司做算法工程师,一般的工作流程是1.hadoop跑数据做线下调研,2 调研结果出来后,跟线上效果做对比,3 线下调研结果OK 将模型上线。一般来讲,训练数据都具有时效性,模型需要常常更新才能在线上获得稳定的效果,于是在模型上线后搭建一个自动化更新模型的pipeline就变得非常重要了。
pipeline的一般搭建流程如图一所示:
首先是日志挖掘,从线上日志利用hadoop挖掘原始数据;其次是从原始数据中清洗并且提取特征(可能这里还需要对数据进行采样,变换数据分布);然后是重新自动训练一个新的模型,在测试集上自动评估后,以词典的方式上线。(深度学习的模型参数值保存为pb文件,可以通过上线词典的形式更新模型)。我将整体的pipeline 流程分为三段:
a.数据集生成,hadoop 日志挖掘与清洗
b.模型生成,模型自动训练
c.词典上线,评估结果并自动上线
在数据集生成阶段,其实可以分为三段: 1 日志挖掘原始数据;2 数据清洗与特征变换;3 数据抽样变换分布,用一个主shell处理数据集生成。
1 在这里每一个子任务都应该由一个shell脚本处理,在每一个子任务里都应该打印重要的参数信息,例如输入和输出以及其他的重要参数,方便脚本出错debug调试。每一个子任务都可能有很多需要控制的参数,这些参数不应该分开写在每个shell里,应该写在主shell里统一控制。
2 一个自动化的pipeline应该是全程自行的,不需要我们去管他。只有当遇到错误发生的时候需要提醒我们去处理。所以在每一个子shell里应当编写if语句 发送邮件通知。
if ;then
echo "dst M/R Job fails" | mail -s "check the hadoop shell" 邮箱名
exit 1
fi
3 有的数据清洗与特征变换任务可以在hadoop上直接完成,有的可能由于一些特征原因需要在本地完成,这点需要工程师自行决定怎么才是最优选择。
4 对于数据抽样变换分布,我一般用蓄水池抽样,根据不同的分类,等概率抽取每个类别的样本数据
基于docker搭建hadoop跨主机集群
摘要:本文是基于docker 17.09.0搭建的hadoop 2.7.2 分布式跨主机集群,集群规模为一个master和两个salve,一共使用三台物理主机(两台或者多台物理机均可模拟),集群网络使用的是docker swarm搭建。
备注:中文社区中相关资料极少,相关资料请直接翻阅 官方文档
运行之后会有如下信息提示
进入slave1中,运行如下命令:
同样进入slave2中,运行相同命令
这样,节点slave1 slave2就加入了master的swarm网络了。其中运行的命令即为第二步中创建完网络提示的信息。
观察上一步我们发现, hadoop-master容器启动在master主机上。我们进入到master。
自此,使用docker的跨主机的hadoop集群搭建完成。
问题描述:笔者在搭建过程中碰到了这个问题,docker容器hadoop-master和hadoop-slave1,hadoop-slave2在一个swarm网络中,能够互相ping通,但是在ssh登录的时候出现 connection time out 异常,等了很久最后连接超时,也没有报其他问题。笔者在碰到这个问题的时候,找到的原因是物理主机slave1,slave2的防火墙没有关,直接截拦了对容器内部的ssh访问。
解决方案:

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30




