Ubuntu搭建Hadoop的踩坑之旅(三)

之前的两篇文章介绍了如何从0开始到搭建好带有JDK的Ubuntu的过程,本来这篇文章是打算介绍搭建伪分布式集群的。但是后来想想反正伪分布式和完全分布式差不多,所幸直接介绍完全分布式了。

如果你想自己搭建伪分布式玩的话,参考:在VMware下安装Ubuntu并部署Hadoop1.2.1分布式环境 - CSDN博客

这一篇主要参考这篇文章:Hadoop2.6.0安装 - 集群(搭建的过程中没截图,大家可以到原博客看)

一、所需的环境和软件:(以下是我们的环境,仅供参考)

1. 操作系统:Windows 10 64位

2. 内存:4G以上(4G 可以搭建,不过虚拟机的运行可能会比较慢,这种情况可以考虑双系统)

3. VMware Workstation 12:VMware-workstation-full-12.5.7-5813279.exe

4. VMware Tools:通过VMware来安装

5. Ubuntu12.04:ubuntu-14.04.5-desktop-amd64.iso,ubuntu-16.04.3-desktop-amd64.iso(团队中两种系统都有人成功,不过高版本的比较顺利)

6. SSH:通过linux命令来安装

7. JDK1.8:jdk-8u11-linux-x64.tar.gz

8. Hadoop2.6.0:hadoop-2.6.0.tar.gz

二、集群的搭建(以三台机器为例子,一台master(主机),两台Slave(从机),在虚拟机的设置中将网络适配改为桥接)

1.为了使得机器间能够互相连通,我们需要修改/etc/hosts文件。

首先我们要知道每一台机器的IP地址:通过 ifconfig 来查看

使用ping命令来测试能不能连通其他的机器

ping IP

使用 Ctrl+c来停止

知道了每台主机的IP之后就可以去修改hosts文件了(每一台主机做同样的配置),sudo gedit /etc/hosts

修改成下面的样子

192.168.31.61 Master

192.168.31.29 Slave1

192.168.31.34 Slave2

修改完之后就可以用ping Slave1来测试能否链接。

2、配置SSH登录

配置SSH是为了使得每台机器之间能够通过SSH实现无密码登录

安装ssh:

apt-get install ssh

安装好后生成ssh公钥。

$cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost,生成.ssh目录
$rm ./id_rsa* # 删除之前生成的公匙(如果有)
$ssh-keygen -t rsa # 一直按回车就可以
$cat ./id_rsa.pub >> ./authorized_keys #将公钥加入授权

将Master 上生成的公钥传到各个Slave节点

$scp ~/.ssh/id_rsa.pub [email protected]:/home/hadoop/
$scp ~/.ssh/id_rsa.pub [email protected]:/home/hadoop/

这里的hadoop是指用户名,如果你集群中的机器名字不一样,就直接改成相应的用户名就行了。

Master将公钥传输到各个节点后,Slave 要将公钥加入授权,这样Master 就能通过ssh免密码登录各台机器了。

$cd ~/.ssh

$cat /home/hadoop/id_rsa.pub >> ./authorized_keys #将Master的公钥加入授权,/home/hadoop/换成自己的目录

每一台Slave机器都完成上述工作后,Master可以使用ssh登录各台主机了。

$ssh Slave1 #登录Slave1,成功的话是不需要密码的,然后$前面的提示信息会变成你登录的那台主机的信息

$ exit #退出登录

注意:如果你的从机用户名和hosts文件里面的Slave1不一样的话,直接ssh Slave1可能会登陆不了。所以这时可以改成:ssh 用户名@Slave1

如果没什么问题的话,就表明ssh操作就是成功了

3、集群xml文件的配置

将Hadoop解压所有机器统一放到同一个目录下。(节点启动是master通过ssh登陆到每一台从机然后在相同的目录启动Hadoop)

配置文件必须要配置的有5个,还有一个可能要配置。

必要的是: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。

可能:hadoop-env.sh

先说hadoop-env.sh这个文件,为什么是可能呢?因为如果每一台机子的JDK路径不同的话需要在文件中加入JDK路径:

红框部分:你的JDK路径。

slaves文件:

将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。;例如直接将 Slave1 和 Slave2 都加入其中。

core-site.xml文件

<configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://Master:9000</value>
            </property>
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>file:/usr/local/hadoop/tmp</value>
                    <description>Abase for other temporary directories.</description>
            </property>
    </configuration>

hdfs-site.xml文件:

<configuration>
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>Master:50090</value>
            </property>
            <property>
                    <name>dfs.replication</name>
                    <value>1</value>
            </property>
            <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:/usr/local/hadoop/tmp/dfs/name</value>
            </property>
            <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/usr/local/hadoop/tmp/dfs/data</value>
            </property>
    </configuration>

dfs.replication是hdfs数据块的复制份数一般默认为3,但是这里只有两台机器,所以改为2.

mapred-site.xml 文件(默认文件名为 mapred-site.xml.template,需要将文件名改成mapred-site.xml),然后配置修改如下:

<configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>Master:10020</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>Master:19888</value>
            </property>
    </configuration>

yarn-site.xml文件

<configuration>
            <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>Master</value>
            </property>
            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
    </configuration>

ok配置完成

4、对从机的每一台主机做同样的配置

把/usr/local/hadoop文件夹拷贝到每一台从机上面可以用U盘或者远程拷贝

$cd /usr/local
$sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
$sudo rm -r ./hadoop/logs/*   # 删除日志文件
$tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
$cd ~
$scp ./hadoop.master.tar.gz Slave0:/home/hadoop

copy结束后,在Slave1和Slave2节点上直接将copy过来的目录解压即可(Master节点需要和Slave节点有相同的配置)。

$sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
$sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
3 $sudo chown -R hadoop /usr/local/hadoop

5、启动Hadoop集群(在Master上启动):

$cd /usr/local/hadoop               #你的Hadoop文件夹
$hdfs namenode -format             #格式化namenode
$start-dfs.sh                      #启动hdfs
$start-yarn.sh                     #启动yarn框架
$mr-jobhistory-daemon.sh start historyserver

然后用JPS查看每个节点的守护进程:

Master节点

楼主没截图,图片取自原参考博客

Slave1

楼主没截图,图片取自原参考博客

Slave2

楼主没截图,图片取自原参考博客

这时可以上web页面查看节点状态

1. 访问 http://localhost:50070 可以查看Hadoop集群的节点数、NameNode及整个分布式系统的状态等(live node是存活几点个数,不为0则成功)。

2. 访问 http://localhost:50030 可以查看JobTracker的运行状态,如Job运行的速度、Map个数、Reduce个数等。

3.访问 http://localhost:8088 可以查看节点状态等

6、停止集群

$stop-yarn.sh
$stop-dfs.sh
$mr-jobhistory-daemon.sh stop historyserver

*备注:遇到问题查看日志文件一个很好的选择

坑:

9000端口:jps显示有datenode,但是livenode为0。9000端口真的是一个很诡异的问题,一度在这里卡了很久。查过很多方法,最后大致是这么解决的:

卸载防火墙:

sudo apt-get remove iptable

/etc/hosts文件做如下改动

127.0.0.1 localhost

127.0.1.1 localhost.localdomain localhost

0.0.0.0 Master

还有的是这样:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

10.20.77.172 hadoop-master

10.20.77.173 hadoop-slave1

10.20.77.174 hadoop-slave2

10.20.77.175 hadoop-slave3

网上各种版本,我也依旧不是很确定,大家试着吧。

datenode未启动:

将所有机器的hadoop下的tmp文件夹内的东西删掉就好

原文地址:https://www.cnblogs.com/cbs-writing/p/8506095.html

时间: 2024-10-09 16:46:00

Ubuntu搭建Hadoop的踩坑之旅(三)的相关文章

Zabbix 踩坑之旅——zabbix触发重启tomcat

一.实验需求 公司tomcat服务经常自动崩溃,导致业务中断,暂时用zabbix对其执行监控,在tomcat崩溃时能够先自动启动,保证业务尽快恢复正常. 二.准备环境 系统环境:CentOS 6.5 IP地址: zabbix-server: 192.168.239.128 zabbix-agent: 192.168.239.130 zabbix的服务端和客户端的安装此处都以rpm包安装,配置略过.agent端上安装好tomcat. 三.开启踩坑之旅--agent端 ① 修改zabbix-agen

vue+ vue-router + webpack 踩坑之旅

说是踩坑之旅 其实是最近在思考一些问题 然后想实现方案的时候,就慢慢的查到这些方案   老司机可以忽略下面的内容了 1)起因  考虑到数据分离的问题  因为server是express搭的   自然少不了res.render("xx",data)    这句话的意思就是去查找相应的模板文件然后在用数据去渲染在将渲染好的页面去返回给浏览器,给浏览器去解析,渲染模板其实就是做的替换字符串+拼接字符串的活  各种的模板引擎也有各个优化的点(比如可以将对应的模板编译的函数保存在内存中,然后在通

一次痛苦又甜蜜的微信支付踩坑之旅

凡是和钱打交道的事,没有一样是容易的.这是我第一次接触微信支付,发现网上还是有很多同学在求助,XXX了怎么办?XXX是什么情况?为了帮助更多的小伙伴脱离"苦海",我决定写下这次的踩坑之旅,给更多的人帮助. 介绍 微信支付方式分为刷卡支付.公众号支付.扫码支付.APP支付.H5支付.小程序支付. 先从应用场景来各自说一说,这样,能够最快的判断出应该选择哪一种支付. 刷卡支付:使用扫描设备(扫描枪)多见于超市.便利店使用 公众号支付:嵌入公众号的H5页面 扫码支付:用户打开"微信

小程序踩坑之旅

小程序踩坑之旅 —— 分包 小程序踩坑之旅 —— 分享 小程序踩坑之旅 —— 页面路由 小程序踩坑之旅 —— canvas 原文地址:https://www.cnblogs.com/xxhuan/p/11334792.html

Hadoop编程踩坑

Hadoop踩坑 在hadoop所有组件编程中,遇到在Windows下运行程序出现 1 java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 2 at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:356) 3 at org.apache.hadoop.util.Shell.getWinU

Python 踩坑之旅进程篇其四一次性踩透 uid euid suid gid egid sgid的坑坑洼洼

目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 菜单 - Python踩坑指南代码示例 1.1 踩坑案例 小明是个服务器管理员, 他从老管理员手里接手了一个非常繁琐的运维工作: 短暂授权root 账号给不同的 team 接口人运行备份任务 该运维任务有几个特点: 任务需且仅需运行在 root 下 root 账号只能短暂授权给各个小组 通过账号管理平

Python踩坑之旅其一杀不死的Shell子进程

1.1 踩坑案例 踩坑的程序是个常驻的Agent类管理进程, 包括但不限于如下类型的任务在执行: a. 多线程的网络通信包处理 和控制Master节点交互 有固定Listen端口 b. 定期作业任务, 通过subprocess.Pipe执行shell命令 c. etc 发现坑的过程很有意思: a.重启Agent发现Port被占用了 => 立刻想到可能进程没被杀死, 是不是停止脚本出问题 => 排除发现不是, Agent进程确实死亡了 => 通过 netstat -tanop|grep p

hadoop安装踩坑

切记!!!!! 没有比官网教程更详细,更靠谱的教程!!!!! 其他的基本都是官网的翻译,但是官网的教程是实时更新的,要是不注意版本,坑根本就踩不完!!! 附上官网部署教程: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html 单节点的安装只需要关注两个点: 1.linux安装的java版本,各个版本的hadoop对java版本是要求的,具体信息如下: https://

百度地图sdk踩坑之旅

1.写在前面 项目中需要加上路线规划,导航,添加覆盖物,因为我最开始项目中定位我使用的是百度定位,所以为了省事,接着使用百度地图sdk实现这些.这两天踩了很多百度地图的坑,记下来.因为一些原因,后面会说,需求还没做完,所以效果图很简单,如下. 2.坑1,环境配置 对于百度地图sdk的配置我是无语.因为一开始项目中并没打算使用百度地图其他功能,只是准备定位.所以我下载sdk时只是下载了定位的sdk,如图 现在需要加上地图和导航的sdk(后面才知道导航并不需要下载专门的导航sdk,因为地图sdk可以