hadoop集群配置记录

Hadoop集群安装笔记

  • Hadoop集群安装笔记
    • 硬件配置
    • 软件配置
      • 设置环境变量
      • 配置Hadoop
    • 集群运行
      • 启动Hadoop
    • 遇到的问题汇总
      • ssh连接问题
      • hostname设置
      • Hadoop-eclipse插件设置
    • 参考资料

上个月写的记录,今天想起来弄到博客上了
捣腾了很长时间,算是把集群搭建起来了,这里做一个小小的总结,毕竟走了不少弯路,希望以后能吸取教训。

硬件配置

使用了三台主机,配置如下:

hostname OS IP
node7 Ubuntu16.04 192.168.1.101
node8 Ubuntu16.04 192.168.1.102
node11 Ubuntu16.04 192.168.1.103

节点功能配置:

Namenode Datanode
node8 node7,node11

软件配置

需要安装的软件包括 jdk、 hadoop 、 ssh
我的搭配是: jdk1.8.0_121 + hadoop2.6.5+ssh

为避免权限问题,以下所有操作均以root用户操作

安装jdk
下载jdk-8u121-linux-64.tar.gz, 解压到/usr/java
最终为/usr/java/jdk1.8.0_121

安装hadoop
下载hadoop-2.6.5.tar.gz ,解压到/usr/hadoop
最终为/usr/hadoop/hadoop2.6.5

安装ssh-server
执行如下命令

apt-get install openssh-server

安装好ssh-server后,需要配置SSH免密码登录。【见问题汇总】

设置环境变量

解压jdk和Hadoop后,要设置JAVA_HOMEHADOOP_HOME环境变量。网上所述,在Ubuntu16.04中,环境变量应放在~/.profile中,但测试无效,最后的解决方法是直接添加到~/.bashrc中。在这个例子中,具体是向~/.bashrc中添加了如下两行:

export JAVA_HOME=/usr/java/jdk1.8.0_121
PATH=$PATH:$JAVA_HOME/bin

HADOOP_HOME=/usr/hadoop/hadoop2.6.5
PATH=$PATH:$HADOOP_HOME/bin

保存,执行source ~/.bashrc命令让修改生效。
在终端输入 java -version命令,如果正确显示Java的版本,说明java配置成功。

/usr/hadoop/下建立hdfs、tmp两个目录,
/usr/hadoop/hdfs下新建data、name两个目录。

配置Hadoop

目前对性能、负载均衡不做太大要求,所以需要考虑的配置文件比较少,主要涉及以下文件
以下文件路径均为:HADOOP_HOME/etc/hadoop/

  • hadoop-env.sh
  • mapred-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • slaves

接下来说下几个主要的配置文件

hadoop-env.sh mapred-env.sh
在hadoop-env.sh和mapred-env.sh中
为了避免环境变量不生效等问题,注释掉如下语句,export JAVA_HOME=${JAVA_HOME}手动指定JAVA_HOME路径的设置。
添加export JAVA_HOME=/usr/java/jdk1.8.0_121

core-site.xml
主要的配置如下:

<property>
    <name>fs.defaultFSname>
    <value>hdfs://node8:9000value>
    <description>指定namenode主机及端口号description>
property>

<property>
    <name>hadoop.tmp.dirname>
    <value> file:/usr/hadoop/tmpvalue>
    <description>指定namenode存放相关文件的目录~description>
property>

hdfs-site.xml

<property>
    <name>dfs.namenode.secondary.http-addressname>
    <value>node8:9001value>
property>

<property>
    <name>dfs.namenode.name.dirname>
    <value>file:/usr/hadoop/hdfs/namevalue>
    <description>命名节点存放信息目录description>
property>

<property>
    <name>dfs.datanode.data.dirname>
    <value>file:/usr/hadoop/hdfs/datavalue>
    <description>数据节点存放数据目录description>
property>

<property>
    <name>dfs.replicationname>
    <value>2value>
property>

mapred-site.xml

<property>
    <name>mapreduce.framowork.namename>
    <value>yarnvalue>
    <description>系统采用的资源调度框架名description>
property>

slaves

node7
node11

配置好一个节点后,将这些配置文件分发到集群中的其他节点,确保集群中所有机器的配置信息一致。
在hadoop集群中的节点通信时需要用到ssh,在这里我们需要配置ssh面密码登录,也就是说节点之间能够通过ssh服务远程登录,不需要交互式地输入密码。【见问题汇总】


集群运行

启动Hadoop

首先格式化namenode,执行hadoop namenode -format命令。
成功格式化namenode之后,切换到/usr/hadoop/hadopp2.6.5/sbin
执行./start-all.sh命令启动namenode,datanode等。


遇到的问题汇总

ssh连接问题

安装ssh-sever
首先确保需要互相连接的两台主机间安装了ssh并开启了ssh-server服务
安装方法,执行
apt-get install openssh-server
查看ssh-server是否启动
ps -aux |grep
如果显示 sshd相关字样,说明ssh-server已开启

如何免密码登录
ssh通过公钥密钥对来完成认证和加密。
执行命令ssh-keygen,一路回车。
默认会生成~/.ssh/id_rsa.pub~/.ssh/id_rsa两个文件。

我的理解是:如果A要免密码登录到B,那么将A的公钥添加到B的~/.ssh/authorized_keys文件中;
同理,B要免密码登录A,需要将B的公钥添加到A的~/.ssh/authorized_keys文件中。
配置好以后,通过执行ssh remotehost登录远程主机。

主机间的文件拷贝可通过scp命令完成,命令格式为:

scp userA@hostA:fileA userB@hostB:fileB

如何设置root用户ssh登录
默认情况下,禁止root通过ssh登录,在此例中,需要开启。
编辑/etc/ssh/sshd_config
注释掉PermitRootLogin这一行,添加PermitRootLogin yes

hostname设置

为了方便,修改主机默认的hostname,并配置每个节点的hosts文件,完成节点名称与IP的映射。
修改hostname
编辑/etc/hostname,添加hostname
此例中,三个主机的hostname分别配置为node7,node8,node11

完成主机和IP的映射
在三台主机上的/etc/hosts添加如下配置:

node7 192.168.1.101
node8 192.168.1.102
node11 192.168.1.103

重启主机使修改生效。

Hadoop-eclipse插件设置

采用eclipse开发mapred,可使用相关Hadoop插件。

插件的安装:将下载的hadoop-eclipse-plugin-2.6.5.jar拷贝到eclipse安装目录下的plugins目录下(我这里是/usr/eclipse/plugins),重启eclipse。
在【new】-【other】中可以看到【Maps/Reduce】项目向导,说明插件添加成功。

如果找不到新添加的插件,可以试着先通过删掉/usr/eclipse/configuration/下的org.eclipse.update目录,再重启eclipse。一般来说重启后就能检测到新添加的插件。


参考资料

Hadoop 新 MapReduce 框架 Yarn 详解
hadoop2.6完全分布式环境搭建 - 风痕影默 - 博客园
看懂Hadoop集群原理与实现方式董志峰Do新浪博客
Linux中安装配置hadoop集群 - 会心一击 - 博客园
Hadoop安装教程单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04给力星
SSH 密钥类型的的选择 - 残雪余香 - 博客园
Hadoop中重新格式化namenode - WQ-JAY的个人空间
Linux下Hadoop2.6的安装 - mm_bit的博客 - 博客频道 - CSDN.NET
Hadoop第6周练习—在Eclipse中安装Hadoop插件及测试(Linux操作系统) - shishanyuan - 博客园

你可能感兴趣的:(hadoop,集群)