文档章节

Hadoop集群安装配置详细教程

木生人
 木生人
发布于 2017/04/07 14:48
字数 3001
阅读 70
收藏 0

 

本教程讲述如何在ubuntu上配置 Hadoop 集群,一个master节点,一个slave节点。主要有以下八个步骤:

一,创建hadoop用户

    如果安装ubuntu的时候不是用的hadoop用户,需要增加一个名为hadoop的用户。

    打开终端(ctrl+alt+t):

sudo useradd -m hadoop 

设置密码,假如密码为123456

sudo passwd 123456

为 hadoop 用户增加管理员权限:

sudo adduser hadoop sudo

最后注销当前用户(点击屏幕右上角的齿轮,选择注销),用hadoop 用户进行登陆。

二,安装,更新软件

为方便后续更改一些配置文件,建议安装vim(如果你实在还不会用 vim 的,请将后面用到 vim 的地方改为 gedit,这样可以使用文本编辑器进行修改,并且每次文件更改完成后请关闭整个 gedit 程序,否则会占用终端):

sudo apt-get install vim

如果安装不了,可先更新apt,没更新可能有一些软件安装不了

sudo apt-get update

若出现如下 “Hash校验和不符” 的提示,可通过更改软件源来解决。若没有该问题,则不需要更改。

更改软件源:

1,首先点击左侧任务栏的【系统设置】(齿轮图标),选择【软件和更新】

2,点击 “下载自” 右侧的方框,选择【其他节点】

3,在列表中选中【mirrors.aliyun.com】,并点击右下角的【选择服务器】,会要求输入用户密码,输入即可。接着点击关闭。

4,接着点击关闭,此时会提示列表信息过时,点击【重新载入】。

5,最后耐心等待更新缓存。此过程耗时较长,更新完成会自动关闭【软件和更新】这个窗口。如果还是提示错误,请选择其他服务器节点如 mirrors.163.com 再次进行尝试。更新成功后,再次执行 sudo apt-get update就正常了。

三,安装Java环境

为图方便,这边直接通过命令安装 OpenJDK 7(也可去官网进行下载安装https://wiki.apache.org/hadoop/HadoopJavaVersions

sudo apt-get install openjdk-7-jre openjdk-7-jdk

安装好后找到对应的路径,配置JAVA_HOME环境变量

dpkg -L openjdk-7-jdk | grep '/bin/javac'

该命令会输出一个路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了。如输出路径为 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,则我们需要的路径为 /usr/lib/jvm/java-7-openjdk-amd64。接着配置 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置(该文件原本可能不存在,内容为空,这不影响)

vim ~/.bashrc

在文件添加单独一行,将路径改为你自己的路径

export JAVA_HOME=JDK安装路径

让环境变量生效

source ~/.bashrc    # 使变量设置生效

检验设置是否正确

echo $JAVA_HOME     # 检验变量值
java -version
$JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样

这样,Hadoop 所需的 Java 运行环境就安装好了。

 

四,网络配置

        假设集群所有节点都在同一个局域网,如果是使用虚拟机安装,必需更改网络连接方式为桥接(Bridge)模式,保证每个节点的MAC地址唯一,否则会ip冲突

为了区分各个节点,更改各个节点的主机名,在 Master 节点上执行如下命令修改主机名(即改为 Master,注意是区分大小写的):

sudo vim /etc/hostname

输入Master即可

执行ifconfig分别查看自己的Master和Slave1的ip

修改集群节点的主机名与IP地址映射关系,修改完后需要重启才能看到终端机器名的改变

sudo vim /etc/hosts

以上对Master 节点的 /etc/hostname和/etc/hosts配置,各个 Slave 节点上也需要分别进行类似操作修改。

配置好后,测试是否相互ping得通,如果ping不通,后面就无法顺利配置

例如我在 Master 节点上ping Slave1,ping 通的话会显示 time,显示的结果如下图所示

同理,在Slave1节点上ping Master

五,SSH无密码登陆节点

    1,什么是SSH?

    传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。

    2,SSH的安全验证是如何工作的?

       基于密匙的安全验证:需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

        对应到hadoop中,Master作为客户端,要实现无密码公钥认证,连接到服务器Salvers(Workers)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。

    3,为什么要设置ssh无密码登陆节点?

    Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。

        " 公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_rsa.pub;私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。

首先生成Master节点的公钥(因为修改过主机名,所以需要删掉原有的再重新生成一次),执行

ssh localhost
cd ~/.ssh               
rm ./id_rsa*          
ssh-keygen -t rsa  

让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行:

cat ./id_rsa.pub >> ./authorized_keys

完成后可执行 ssh Master  验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。接着在 Master 节点将上公匙传输到 Slave1 节点:

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上 hadoop 用户的密码(hadoop),输入完成后会提示传输完毕

然后在Slave1节点上,将ssh公钥加入授权

mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub    # 用完就可以删掉了

如果有其他 Slave 节点,也要执行将 Master 公匙传输到 Slave 节点、在 Slave 节点上加入授权这两步。

在 Master 节点上验证无密码 SSH 到 Slave1 节点上

ssh Slave1

六,安装 Hadoop 2

Hadoop2 可以通过 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/下载,一般选择下载最新的稳定版本,即下载 “stable” 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

在浏览器中下载的文件,默认保存在 “下载” 目录中(若不是请自行更改 tar 命令的相应目录),本教程选择的是 2.6.5版本,如果你对版本不是2.6.5,则将后文中所有命令中出现的2.6.5更改为你所用的版本。

下载完成后,开始对Hadoop进行安装,本教程选择安装在 /usr/local/ 目录中

sudo tar -zxf ~/下载/hadoop-2.6.5.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.5/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

查看hadoop版本信息,检验Hadoop是否可用

cd /usr/local/hadoop
./bin/hadoop version

七,配置集群/分布式环境

集群/分布式模式需要修改slaves、core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml 5个配置文件,配置PATH变量,这里仅设置了正常启动所必须的设置项,更多配置请查看官方文档 

1,配置slaves

      将作为 DataNode 的slave主机名写入该文件,每行一个,默认为 localhost,Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加一行内容:Slave1。

cd /usr/local/hadoop/etc/hadoop
vim slaves

2,配置文件core-site.xml

vim 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>

3, 配置文件 hdfs-site.xml

vim 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>  #slave节点数量
        </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>

4,配置文件 mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下

vim 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>

5,配置文件 yarn-site.xml

vim 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>

6,配置环境变量

将 Hadoop 安装目录加入 PATH 变量中,这样就可以在任意目录中直接使用 hadoo、hdfs 等命令了,如果还没有配置的,需要在 Master 节点上进行配置。首先执行vim ~/.bashrc ,加入一行:

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

八,将 Master 上的Hadoop 文件夹复制到各个slaves节点上。

tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop

在 Slave1 节点上执行

sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local #将hadoop解压到/usr/local目录下
sudo chown -R hadoop /usr/local/hadoop             #更改hadoop文件的权限

如果有其他 Slave 节点,也要执行将 hadoop.master.tar.gz 传输到 Slave 节点、在 Slave 节点解压文件的操作。

首次启动需要先在 Master 节点执行 NameNode 的格式化,首次运行需要执行初始化,之后不需要

hdfs namenode -format

在 Master 节点上启动 hadoop

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

通过命令  jps 可以查看各个节点所启动的进程。可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程

在 Slave 节点可以看到 DataNode 和 NodeManager 进程,缺少任一进程都表示出错。

 

 

 

© 著作权归作者所有

木生人
粉丝 1
博文 3
码字总数 3001
作品 0
杭州
私信 提问
超详细hadoop发行版安装教程(附图文步骤)

在前几篇的文章中分别就虚拟系统安装、LINUX系统安装以及hadoop运行服务器的设置等内容写了详细的操作教程,本篇分享的是hadoop的下载安装步骤。在此之前有必要做一个简单的说明:分享的所有...

左手的倒影
2018/08/03
63
0
最新hadoop新手入门教程汇总

关于hadoop的分享此前一直都是零零散散的想到什么就写什么,整体写的比较乱吧。最近可能还算好的吧,毕竟花了两周的时间详细的写完的了hadoop从规划到环境安装配置等全部内容。写过程不是很难...

adnb34g
2018/08/06
0
0
hadoop实操篇:hadoop基础教程汇总

关于hadoop的分享此前一直都是零零散散的想到什么就写什么,整体写的比较乱吧。最近可能还算好的吧,毕竟花了两周的时间详细的写完的了hadoop从规划到环境安装配置等全部内容。写过程不是很难...

左手的倒影
2018/08/06
37
0
最新hadoop下载安装教程(附详细图文步骤)

在前几篇的文章中分别就虚拟系统安装、LINUX系统安装以及hadoop运行服务器的设置等内容写了详细的操作教程,本篇分享的是hadoop的下载安装步骤。 在此之前有必要做一个简单的说明:分享的所有...

adnb34g
2018/08/03
0
0
HDFS HA和Federation

cluster1和cluster2组成hdfs联盟,cluster1有namenodeA和namenodeB,cluster2有namenodeC和namenodeD。 安装配置好后启动顺序应该为: 1.在所有zookeeper集群节点上启动zookeeper:zkServer....

cjun1990
2015/08/27
79
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
6
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
7
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部