【Hadoop集群】-集群搭建踩的那些坑之hadoop篇

       上篇文章说了在集群搭建的时候首先要开启ssh的公钥验证,只有开启了公钥验证后才能够使用公钥登录,但是在开启并生成公钥后还需要对秘钥文件进行授权处理,一般生成的authorized_keys可能文件的归属并不是ssh权限,所以在使用公钥验证的时候无法访问该文件,需要修改文件的归属权。
       ssh公钥互相通信搭建好后,这只是第一步,第二步就需要安装配置hadoop和对应的hadoop执行环境了,在搭建环境的时候hadoop也会有一些启动问题,大部分主要的问题是集群配置环境造成的,接下来反应一些主要的出错场景,及解决方法。

搭建的hadoop集群的具体环境如下:
    主节点:
        系统:CentOS Linux release 7.3.1611 (Core)
        系统名称:hadoop-master
        系统ip:192.168.1.130
        hadoop:hadoop2.8.4
        java:1.7.0
        ssh2:OpenSSH_7.4p1, OpenSSL 1.0.2k-fips
    子节点:
        系统:Ubuntu 15.04
        系统名称:hadoop-salve1
        系统ip:192.168.1.128
        hadoop:hadoop2.8.4
        java:1.7.0
        ssh2:OpenSSH_6.7p1 Ubuntu-5ubuntu1, OpenSSL 1.0.1f

hadoop官方下载地址:http://hadoop.apache.org/
hadoop官方文档地址:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-common/ClusterSetup.html

一、集群搭建的配套环境

      在搭建hadoop集群环境时需要的机器和java不再细说,这里主要说些在搭建的时候遇到的一些主要问题,以及搭建过程中需要注意的地方。
     在搭建时需要配置系统的名称以及对应的hosts,在hadoop各项配置文件中最好使用系统名称配置,不要使用ip,因为集群的ip变更的话很容易导致集群出问题。所以首先要做的就是修改系统的系统名称。

1.1 修改系统名称及hosts

    1.1.1 修改主机

       主机的系统名称修改为hadoop-master,从机系统名称修改为hadoop-slave1,并配置响应的ip,主机外部配置如下:

-bash-4.2$ sudo vim /etc/hostname 
[sudo] password for hadoop: 

hadoop-master

-bash-4.2$ vim /etc/hosts

127.0.0.1   localhost
#localhost.localdomain localhost4 localhost4.localdomain4 
::1         localhost
#localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.132 hadoop-slave1
192.168.1.130 hadoop-master

       Note:这里主机的hosts一定要配置成局域网的ip,并将localhost.localdomain注释掉,修改完后一定要重启系统才能生效,重启完成后保证主节点的服务器防火墙已关闭,否则启动hadoop会报如下的错误:org.apache.hadoop.ipc.Client: Retrying connect to server: hadoop-master/192.168.1.130:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=100, sleepTime=10000 MILLISECONDS),这是由于主机hadoop没有正常启动或者启动后9000端口没有对外开放,排查方法可以查看hadoop日志,一般启动不报错的话,这个问题就主要是hadoop配置的9000对应的域名是127.0.0.1,没有配置局域网可访问的原因。
       Note:如果上面的选项配置没问题,从机能访问主机的9000端口,但是仍会出现上面的问题应该考虑是格式化的问题,这时需要停掉hadoop重新进行格式化。

   1.1.2 修改从机

      从机外部配置如下:

root@hadoop-slave1:/home/hadoop# sudo vim /etc/hostname 

hadoop-slave1
root@hadoop-slave1:/home/hadoop# sudo vim /etc/hosts

127.0.0.1   localhost hadoop-slave1 #localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost hadoop-slave1  #localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.130 hadoop-master
#127.0.1.1  localhost.localdomain 

        Note:这里一定要将127.0.1.1注释掉,网上查的资料据说是会在本机形成网络闭环,导致hadoop无法访问主机。

二、集群运行的主从hadoop配置

       上面的配置是hadoop在运行时必须要做的,磨刀不误砍柴工,只有环境搭建好后hadoop才能正常运行,另外换需要安装jdk,并配置好环境变量,接下来就是要安装hadoop了。
      其实hadoop的安装非常简单,在网上下载一个版本包后添加hadoop的环境变量就可以了,最新版的hadoop下载地址:https://hadoop.apache.org/releases.html

2.1 hadoop环境变量

       解压后,需要配置hadoop环境,下面提供一种hadoop的环境变量配置

export HADOOP_HOME=/Library/hadoop/hadoop284
export PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=DEBUG,console

2.2 hadoop集群配置

       hadoop集群运行的基本环境已经搭建完成,主机搭建好后把hadoop的安装源码复制到从机,并和主机配置相同环境变量,下面提供一种hadoop集群运行的配置,可以作为一种参考。

2.2.1 core-site.xml

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop-master:9000/</value>
	</property>
	<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/var/log/hadoop/tmp</value>
		<description>A base for other temporary directores</description>
	</property>
</configuration>

     配置中的hadoop.tmp.dir路径必须自己创建,也就是说必须创建好/var/log/hadoop路径,这样在启动的时候才不至于出问题。配置项的解释可以看如下的解释,还能够设置读写文件的大小

Parameter

Value

Notes

fs.defaultFS

NameNode URI

hdfs://host:port/

io.file.buffer.size

131072

Size of read/write buffer used in SequenceFiles.

2.2.2 hdfs-site.xml

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs.hosts.exclude</name>
		<value>/Library/hadoop/hadoop284/etc/hadoop/hdfs_exclude.txt</value>
		<description>DFS exclude</description>
	</property>
	<property>
		<name>dfs.data.dir</name>
		<value>/Library/hadoop/hadoop284/hdfs/data</value>
		<final>true</final>
	</property>
	<property>
		<name>dfs.name.dir</name>
		<value>/Library/hadoop/hadoop284/hdfs/name</value>
		<final>true</final>
	</property>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>hadoop-master:9001</value>
	</property>
	<property>
		<name>dfs.webhdfs.enabled</name>
		<value>true</value>
	</property>
	<property>	
		<name>dfs.permissions</name>
		<value>false</value>
	</property>
</configuration>

    配置中的dfs.namedir以及dfs.data.dir对应的路径必须提前创建好。配置项说明,以及其它可以进行配置的内容:

Parameter

Value

Notes

dfs.namenode.name.dir

Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.

If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.

dfs.hosts / dfs.hosts.exclude

List of permitted/excluded DataNodes.

If necessary, use these files to control the list of allowable datanodes.

dfs.blocksize

268435456

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值