ubuntu下hadoop配置指南

目录

1.实验目的

2.实验内容(hadoop伪分布式与分布式集群环境配置)

3.运行wordcount词频统计程序

一 . 实验目的

通过学习和使用开源的 Apache Hadoop工具,亲身实践云计算环境下对海量数据的处理,理解并掌握分布式的编程模式 MapReduce,并能够运用MapReduce编程模式完成特定的分布式应用程序设计,用于处理实际的海量数据问题。

二 . 实验内容 

1.实验环境搭建

1.1.  前期准备

      操作系统: Linux Ubuntu 10.04

      Java开发环境:需要JDK 6及以上,Ubuntu 10.04默认安装的OpenJDK可直接使用。不过我使用的是sun的jdk,从官方网站上下载,具体可以参考博客:ubuntu下安装JDK并配置java环境

      Hadoop开发包:试过了hadoop的各种版本,包括0.20.1,0.20.203.0和0.21.0,三个版本都可以配置成功,但是只有0.20.1这个版本的eclipse插件是可用的,其他版本的eclipse插件都出现各种问题,因此当前使用版本为hadoop-0.20.1

      Eclipse:与hadoop-0.20.1的eclipse插件兼容的只有一些低版本的eclipse,这里使用eclipse-3.5.2。

1.2.  在单节点(伪分布式)环境下运行Hadoop

(1)添加 hadoop用户并赋予sudo权限(可选)

        为 hadoop应用添加一个单独的用户,这样可以把安装过程和同一台机器上的其他软件分离开来,使得逻辑更加清晰。可以参考博客:Ubuntu-10.10如何给用户添加sudo权限

(2)配置 SSH 

无论是在单机环境还是多机环境中, Hadoop均采用SSH来访问各个节点的信息。在单机环境中,需要配置 SSH 来使用户 hadoop 能够访问 localhost 的信息。首先需要安装 openssh-server。

sudo apt-get install openssh-server

其次是配置 SSH使得Hadoop应用能够实现无密码登录:

su - hadoop
ssh-keygen -trsa -P ""
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

第一条命令将当前用户切换为hadoop(如果当前用户就是hadoop,则无需输入),第二条命令将生成一个公钥和私钥对(即id_dsa和id_dsa.pub两个文件,位于~/.ssh文件夹下),第三条命令使得hadoop用户能够无需输入密码通过SSH访问localhost。这时可通过以下命令来验证安装是否成功(如果没有提示输入密码直接登录成功,则说明安装成功):

ssh localhost

(3) 配置Hadoop

Hadoop的配置文件都放在/hadoop/conf这个文件夹下面,主要是四个配置文件,分别是core-site.xml,hadoop-env.sh,hdsf-site.xml和mapred-site.xml。

修改conf/hadoop-­‐env.sh,设置JAVA_HOME,在该文件中找到如下行,去掉前面的注释。

# Thejava implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun

修改为:

# Thejava implementation to use.  Required.
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_27

修改core-site.xml内容如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in thisfile. -->
<configuration>
 <property>
   <name>fs.default.name</name>
  <value>hdfs://localhost:9000</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/home/hadoop/program/tmp-${user.name}</value>
  </property>
</configuration>

修改conf/hdfs-site.xml为

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in thisfile. -->
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

修改conf/mapred-site.xml为:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in thisfile. -->
<configuration>
    <property>
       <name>mapred.job.tracker</name>
       <value>localhost:9001</value>
    </property>
</configuration>

(4) 运行Hadoop(当前用户为hadoop)
        以上操作已经完成对Hadoop的配置,接下来是运行Hadoop。第一步需要进行格式化HDFS,运行脚本主要位于HADOOP_HOME/bin目录下,注意HADOOP_HOME为解压缩之后的Hadoop根目录,此处为/home/hadoop/program/hadoop-0.20.1。格式化HDFS命令为: (假设当前目录是已经在/home/hadoop/program/hadoop-0.20.1/bin/)

./hadoop namenode –format
        启动单节点集群:
./start-all.sh
         这个操作会在本机上启动Namenode,SecondaryNameNode,Datanode,JobTracker和TaskTracker共计5个JVM进程,可以通过java自带的jps命令查看。
jps
        通过jps命令可以查看到进程如下:

19811 TaskTracker
19674 SecondaryNameNode
19735 JobTracker
19497 NameNode
20879 TaskTracker
21810 Jps
        停止单节点集群:
./stop-all.sh
        另外可以通过以下网址查看节点的运行情况:
http://localhost:50030/ - Hadoop 管理介面
http://localhost:50060/ - Hadoop Task Tracker 状态
http://localhost:50070/ - Hadoop DFS 状态

1.3. 在多节点(分布式)环境下运行Hadoop

        搭建多节点集群的思想主要是在每一台机器上分别搭建好单机环境,再将几台机器整合成一个集群。因此,在此之前,请确保每一台机器都如1.2节中所述搭建好了单机环境(最好是相同的结构)。 这里说的相同结构是指hadoop安装在项目的目录下,然后多个节点使用都使用相同的用户名操作hadoop集群。比如使用用户名hadoop。这个在 hadoop搭建注意事项汇总中的第一条里面有提到。我第一次部署的时候,因为第一台slave机器使用hadoop账户配置hadoop环境,而第二台master机器使用xuwei这个账户配置hadoop环境,这样在ssh的时候也会出现问题。我使用xuwei账户ssh slave,找到的不是hadoop@slave,而是xuwei@slave。 最后在slave上新建了一个hadoop账户才解决问题。
(1) 设置/etc/hosts文件
实验中两台机器处于同一局域网中,其中一台作为master,ip地址为192.168.0.55,一台作为slave,ip地址为192.168.0.42。更新两台机器的/etc/hosts文件,使用如下命令:

sudo gedit /etc/hosts

添加以下内容:

# /etc/hosts (for master AND slave)
192.168.0.55 master
192.168.0.42 slave

(2) 设置节点之间的无密码SSH登录
这里要求master上的用户hadoop必须能够无密码登录到master和slave两台机器上。经过1.2节第(2)步的配置,已经可以在单机上进行密码SSH登录,这里只需设置由master无密码登录到slave,采用如下命令即可: 在master上运行:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@slave

这条命令的意思是将master上的公钥拷贝到slave上,这样下次ssh slave的时候slave就认识master,无需在输入密码验证。

如下命令可以测试SSH连接成功与否:
ssh master
ssh slave
(3) 修改集群配置文件
        hadoop集群的架构分为两层:HDFS层和MapReduce层,在HDFS层,master将作为NameNode和DataNode,slave作为DataNode;在MapReduce层,master将作为JobTracker和TaskTracker,而slave将作为TaskTracker。值得一提的是,本次实验中master节点既作为管理节点,又担当数据节点。接下来需要修改$HADOOP_HOME/conf/下的配置文件。 在master节点上修改conf/masters文件,添加如下内容:
master
        在master节点上修改conf/slaves文件,添加如下内容(这表明master节点具有双重角色,即做master,又做slave):
master
slave
        如果需要添加更多slave,则可以在conf/slaves中将其他节点的名称添加进去,如下所示:

master
slave
anotherslave01
anotherslave02
在所有节点上修改conf/core-site.xml,更改fs.default.name的值为hdfs://master:9000,具体为:
<property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
</property>
在所有节点上修改conf/mapred-site.xml,将JobTracker的地址改为master具体为:

<property>
	<name>mapred.job.tracker</name>
	<value>hdfs://master:9001</value>
</property>
在所有节点上修改conf/hdfs-site.xml,将更改dfs.replication的值,这个参数决定了集群中一个文件需要保存为多少个拷贝。其默认值为3,因本次试验节点数为2,故更改为2。具体为:

<property>
      <name>dfs.replication</name>
      <value>2</value>
</property>

(4) 格式化HDFS
注意: 如果之前单机环境下格式化过HDFS建议把之前的文件删除,否则可能会出现异常(HDFS目录即之前设置的${hadoop.tmp.dir}\dfs目录)。格式化命令和单机情况下类似, 只是需要在master节点上运行。
./hadoop namenode -format
(5) 启动和停止集群
在master节点上首先启动HDFS,其命令为:
./start-dfs.sh
其结果是在master节点上启动NameNode,SecondaryNameNode和DataNode,在所有slave节点上启动DataNode,通过jps命令可以查看master上启动的服务列表:
hadoop@master:~$ jps
14799 NameNode
15314 Jps
14880 DataNode
14977 SecondaryNameNode
此时slave上的进程列表如下:
hadoop@master:~$ jps
15183 Jps
15616 DataNode
其次,在master节点上启动MapReduce,其命令为:
./start-mapred.sh
这样将会在master 节点上启动JobTracker 和TaskTracker , 在所有slave 节点上启动TaskTracker,通过jps命令可以查看master上启动的服务列表:
hadoop@master:~$ jps
14799 NameNode
15314 Jps
14880 DataNode
14977 SecondaryNameNode
15686 TaskTracker
15596 JobTracker
此时slave上的进程列表如下:
hadoop@slave:~$ jps
15183 DataNode
15897 TaskTracker
16284 Jps
如要停止集群,则需要将上述步骤反过来运行,首先在master上运行

./stop-mapred.sh
其次在master上运行以下命令停止HDFS:
./stop-dfs.sh
这个过程也可通过jps命令来查看是否完成。

三.运行WordCount词频统计程序

代码参考博客:Hadoop WordCount改进实现正确识别单词以及词频降序排序

在eclipse下运行配置参照: eclipse运行wordcount参数配置


 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ubuntu Hadoop集群搭建是在Ubuntu操作系统上搭建Hadoop分布式计算框架的过程。下面是一个简单的步骤: 1. 安装Ubuntu操作系统:首先,你需要在每台计算机上安装Ubuntu操作系统。你可以从Ubuntu官方网站下载最新的稳定版本,并按照官方文档进行安装。 2. 安装Java开发工具包(JDK):Hadoop是用Java编写的,所以你需要安装Java开发工具包。你可以使用以下命令在Ubuntu上安装OpenJDK: ``` sudo apt-get update sudo apt-get install openjdk-8-jdk ``` 3. 配置SSH免密登录:为了方便集群节点之间的通信,你需要配置SSH免密登录。你可以使用以下命令生成SSH密钥对,并将公钥分发到所有节点上: ``` ssh-keygen -t rsa -P "" cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ``` 4. 下载和配置Hadoop:你可以从Apache Hadoop官方网站下载最新的稳定版本。下载完成后,解压缩文件并将Hadoop文件夹移动到适当的位置。然后,你需要编辑Hadoop配置文件,包括core-site.xml、hdfs-site.xml和mapred-site.xml等。 5. 配置Hadoop环境变量:为了方便使用Hadoop命令,你需要将Hadoop的bin目录添加到系统的PATH环境变量。你可以编辑~/.bashrc文件,并添加以下行: ``` export HADOOP_HOME=/path/to/hadoop export PATH=$PATH:$HADOOP_HOME/bin ``` 6. 配置Hadoop集群:在配置文件,你需要指定Hadoop集群的主节点和从节点。你可以编辑hdfs-site.xml文件,并设置dfs.replication参数来指定数据的备份数量。此外,你还需要配置yarn-site.xml文件来指定资源管理器和节点管理器的位置。 7. 启动Hadoop集群:在启动Hadoop集群之前,你需要格式化Hadoop分布式文件系统(HDFS)。你可以使用以下命令来完成: ``` hdfs namenode -format ``` 然后,你可以使用以下命令启动Hadoop集群: ``` start-dfs.sh start-yarn.sh ``` 以上是一个简单的Ubuntu Hadoop集群搭建的步骤。请注意,这只是一个基本的指南,实际搭建过程可能会因环境和需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值