×
文章路径: 开发运维环境

大数据平台环境搭建–1–安装hadoop2.2.0

发表于3年前(Dec 24, 2014 11:20:04 AM)  阅读 387  评论 0

分类: 开发运维环境 大数据

标签: hadoop datanode hdfs namenode yarn

1、下载安装包:http://mirrors.hust.edu.cn/apache/hadoop/common/ 下载2.2.0版本,解压到你要安装的目录,笔者安装目录为/home/hadoop/hadoop,解压后笔者将*.cmd命令文件全部进行了删除,避免命令提示干扰。

2、配置操作系统环境变量 /etc/profile:
export JAVA_HOME=/usr/local/jdk1.7.0_67
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
source /etc/profile立即生效

3、 配置集群环境变量:
a)安装目录etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.7.0_67
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS=”-Djava.library.path=$HADOOP_PREFIX/lib”

b)安装目录etc/hadoop/yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.7.0_67

c)安装目录etc/hadoop/core-site.xml


    
        fs.defaultFS
        hdfs://tserver01:9000
    
    
        hadoop.tmp.dir
        /home/hadoop/hadoop/tmp
    
fs.defaultFS,该项指明了文件系统的访问入口,实际上是告知所有的datanode它们的namenode是哪一个从而建立起namenode与各datanode之间的通信
hadoop.tmp.dir,hadoop生成和使用的文件都位于该目录

d)安装目录etc/hadoop/hdfs-site.xml


    
        dfs.namenode.secondary.http-address
        tserver01:50090
    
    
        dfs.replication
        1
    

dfs.namenode.secondary.http-address //指定secondary namenode结点,若不指定,在使用start-dfs.sh启动时,当前节点将自动成为secondary namenode
dfs.replication //每一个block的复制份数,默认是3,如果集群datanode结点数量小于3应将该值设置小于或等于datanode的结点数量
dfs.namenode.name.dir //存放namenode相关数据的文件夹
dfs.datanode.data.dir //存放datanade相关数据的文件夹
dfs.namenode.checkpoint.dir //存放secondary namenode相关数据的文件夹

e)安装目录拷贝一份etc/hadoop/mapred-site.xml.template命名为mapred-site.xml


    
        mapreduce.framework.name
        yarn
    

mapred-site.xml的各项默认配置可参考:hadoop.apache.org/docs/r2.2.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml 该文件唯一一个必须要修改的项是mapreduce.framework.name,该项告诉hadoop使用何种框架执行map-reduce任务。

f)安装目录etc/hadoop/yarn-site.xml


    
        yarn.resourcemanager.hostname
        tserver01
    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

yarn-site.xml的各项默认配置可参考:http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml 该文件必须修改的项有两个,基中yarn.resourcemanager.hostname项与core-site.xml的fs.defaultFS项类似,该项为所有的nodemanager指明了resourcemanager,建立起resourcemanager与各nodemanager之间的通信。

4、配置slave结点列表,即datanode
通常情况我们使用start-dfs.sh脚本来启动整个集群,查看该脚本可以知道,该脚本会基于配置文件在目标结点上启动namenode,secondary namenode, 和slave(datanode)结点,slave(datanode)的列表是在${HADOOP_HOME}/etc/hadoop/slaves文件中配置的,一个结点一行。所以我们需要在此文件中添加所有的datanode机器名或IP
笔者的slaves文件就为:
tserver01
tserver02

5、各个节点均做以上配置

6、使用ssh无密码登陆
a)在tserver01输入cd ~/.ssh (进入用户目录下的隐藏文件.ssh)
b)在tserver01输入ssh-keygen -t rsa (用rsa生成密钥)
c)在tserver01输入cp id_rsa.pub authorized_keys (把公钥复制一份,并改名为authorized_keys,这步执行完,应该ssh localhost可以无密码登录本机了,可能第一次要密码)
d)在tserver01输入scp authorized_keysqiuchenl@tserver02:/home/hadoop/.ssh (把重命名后的公钥通过ssh提供的远程复制文件复制到从机tserver02上面)
e)在tserver01和tserver02分别输入chmod 600 authorized_keys (更改公钥的权限)
f)在tserver01输入ssh tserver02 (可以远程无密码登录tserver02这台机子了,注意是ssh不是sudo ssh。第一次需要密码,以后不再需要密码)

6、格式化集群
初启动前,需要首先格式化集群,执行命令:
hadoop namenode -format

7、启动hdfs
执行:
start-dfs.sh
该命令可以任意结点上执行。不过需要注意的是如果配置文件中没有指明secondary namenode(即在hdfs-site.xml中没有配置dfs.namenode.secondary.http-address),那么在哪个结点上执行该命令,该点将自动成为secondary namenode.
启动之后,访问:

http://tserver01:50070

检查HDFS各结点情况,如都能访问表示HDFS已无问题,如无法访问或缺少节点,可分析log的中的信息找出问题原因。

8、启动yarn
执行:
start-yarn.sh
该命令可以任意结点上执行。其slaves结点与hdfs一样,读取的也是${HADOOP_HOME}/etc/hadoop/slaves文件。
启动之后,访问:

http://tserver01:8088

检查YARN各结点情况,如都能访问表示YARN无问题,如无法访问或缺少节点,可分析log的中的信息找出问题原因。

常见错误:

e1:Problem connecting to server: xxxx:9000
该错误是防火墙没有关闭导致的

e2:libhadoop.so.1.0.0 which might have disabled stack guard
在使用./sbin/start-dfs.sh或./sbin/start-all.sh启动时会报出这样如下警告:
Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
….
Java: ssh: Could not resolve hostname Java: Name or service not known
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
….
这个问题的错误原因会发生在64位的操作系统上,原因是从官方下载的hadoop使用的本地库文件(例如lib/native/libhadoop.so.1.0.0)都是基于32位编译的,运行在64位系统上就会出现上述错误。解决方法之一是在64位系统上重新编译hadoop,另一种方法是在hadoop-env.sh和yarn-env.sh中添加如下两行:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS=”-Djava.library.path=$HADOOP_PREFIX/lib”

发表评论