如何在 Ubuntu上配置分布式Hadoop(备忘)

作者:Rui 发布时间:October 3, 2015 分类:JAVA,Hadoop,BIGDATA 浏览:705

环境

  1. ubuntu 12.04 TLS
  2. Oracle JDK 1.8
  3. Hadoop 2.6.4
  4. 主机环境:三台主机, 一台Master,两台Slave

设置hostname 和 hosts

将三台主机的hostname和hosts 按以下内容修改

vim /etc/hostname

输入相应的主机名 Master, Slave1, Slave2

vim /etc/hosts

添加hosts配置

192.168.147.128   Master
192.168.147.129   Slave1
192.168.147.130   Slave2

创建Hadoop 用户并设置SSH

本实例将hadoop跑在单独的用户环境中,以下在三台电脑上都要创建

创建用户

sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop 
sudo adduser hadoop sudo
sudo su - hadoop

SSH Password-less login setting

cd ~/.ssh/                     
ssh-keygen -t rsa             
cat ./id_rsa.pub >> ./authorized_keys  

将Master的主机的生成.ssh文件夹,全部拷贝到其他两台主机的hadoop用户主目录下。
拷贝完成后,测试 ssh Master, ssh Slave1, ssh Slave2 是否还需要密码,如果不需要密码,就成功了。

环境变量设置

在Master主机上解压 Hadoop2.6.4 并将Hadoop-2.6.4 放到 /home/hadoop.

vim ~/.bashrc

在此文件中添加一下变量

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_HOME=/home/hadoop/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

之后执行source 命令使其生效

source ~/.bashrc

设置hadoop配置文件

在Master主机上配置以下文件
配置slaves

Slave1
Slave2

配置 core-site.xml

<configuration>
        <property>
             <name>hadoop.tmp.dir</name>
             <value>file://home/hadoop/hadoop-2.6.4/data/dfs/tmp</value>
             <description>Abase for other temporary directories.</description>
        </property>
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://192.168.147.128:9000</value>
        </property>
</configuration>

配置 hdfs-site.xml
dfs.replication 一般设为 3, 但我们本例中的slave只有两个,所以设置成2即可。

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>192.168.147.128:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file://home/hadoop/hadoop-2.6.4/data/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file://home/hadoop/hadoop-2.6.4/data/dfs/data</value>
        </property>
</configuration>

配置 mapred-site.xml

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

配置 yarn-site.xml

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

同步文件

配置完Master的hadoop,需要将Master上的hadoop完整的copy到所有的Slave主机上

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

在 Slave节点上执行:

tar -zxf ~/hadoop.master.tar.gz -C /home/hadoop/hadoop-2.6.4

启动hadoop

格式化Namenode
首次启动需要先在 Master 节点执行 NameNode 的格式化:

hdfs namenode -format 

接着可以启动 hadoop 了,启动需要在 Master 节点上进行:

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

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,如下图所示:
QQ图片20160222164057.png

在 Slave 节点可以看到 DataNode 和 NodeManager 进程,如下图所示:
QQ图片20160222164155.png

缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。例如我这边一共有 1 个 Datanodes:

也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://192.168.147.128:50070/。如果不成功,可以通过启动日志排查原因。

执行hadoop

hdfs dfs -mkdir -p input
hdfs dfs -put /home/hadoop/hadoop-2.6.4/etc/hadoop/*.xml input

通过WEB界面就能看到刚才上传的文件

QQ图片20160222164439.png

接着就可以运行 MapReduce 作业了:

hadoop jar /home/hadoop/hadoop-2.6.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

同样可以通过 Web 界面查看任务进度 http://master:8088/cluster,在 Web 界面点击 “Tracking UI” 这一列的 History 连接,可以看到任务的运行信息

关闭 Hadoop 集群

在 Master 节点上执行:

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

Tips:
Hadoop伪分布式部署
Apache Hadoop 文档

标签: hadoop, ubuntu

添加新评论 »