Hadoop配置过程实践!

1             Hadoop配置

注意事项:关闭所有防火墙


服务器


IP


系统


Master


10.0.0.9


Centos 6.0 X64


Slave1


10.0.0.11


Centos 6.0 X64


Slave2


10.0.0.12


Centos 6.0 X64

Hadoop版本:hadoop-0.20.2.tar.gz

1.1      在master:(在slave1和slave2上操作和以下相同)

#vi /etc/hosts        三台机器相同配置
10.0.0.9  master
10.0.0.11  slave1
10.0.0.12  slave2

#vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=主机名

#reboot

1.2      用root登陆,安装scp (在master、slave1和slave2上)

#yum install openssh-clients

1.3      用root登陆,建立hadoop用户(在master、slave1和slave2上)

#useradd hadoop
#passwd hadoop   输入111111做为密码

1.4      配置SHH认证

1.4.1        在master上

#su - hadoop         进入hadoop用户目录
$ssh-keygen -t rsa    建立ssh目录,敲回车到底
$cd /home/hadoop/.ssh

1.4.2        在slave1上

#su - hadoop           进入hadoop用户目录
$ssh-keygen -t rsa    建立ssh目录,敲回车到底

1.4.3        在slave2上

#su - hadoop           进入hadoop用户目录
$ssh-keygen -t rsa    建立ssh目录,敲回车到底

1.4.4        在master上

$scp -r id_rsa.pub [email protected]:/home/hadoop/.ssh/authorized_keys_m
将master上的密钥传到slave1的hadoop用户下,重命名为authorized_keys_m
密码输入:111111
$scp -r id_rsa.pub [email protected]:/home/hadoop/.ssh/authorized_keys_m
将master上的密钥传到slave2的hadoop用户下,重命名为authorized_keys_m

密码输入:111111

1.4.5        在slave1上

$ cd /home/hadoop/.ssh

$scp -r id_rsa.pub [email protected]:/home/hadoop/.ssh/authorized_keys_s1
将slave1上的密钥传到master的hadoop用户下

$cat id_rsa.pub >> authorized_keys_m  将本地密钥添加authorized_keys

$cp  authorized_keys_m  authorized_keys

$rm –rf authorized_keys_m

1.4.6        在slave2上

$ cd /home/hadoop/.ssh

$scp -r id_rsa.pub [email protected]:/home/hadoop/.ssh/authorized_keys_s2
将slave2上的密钥传到master的hadoop用户下

$cat id_rsa.pub >> authorized_keys_m  将本地密钥添加authorized_keys

$cp  authorized_keys_m  authorized_keys

$rm –rf authorized_keys_m

1.4.7        在master上

$cd /home/hadoop/.ssh

$cat id_rsa.pub >> authorized_keys_s1  将本地密钥添加authorized_keys_s1

$ authorized_keys_s2  >>  authorized_keys_s1

$cp  authorized_keys_s1  authorized_keys

$rm –rf authorized_keys_s1 authorized_keys_s2

1.5      用root登陆,安装JDK  (在master、slave1和slave2上)

#yum install java-1.6.0-openjdk-devel

这个安装,java执行文件自动添加到/usr/bin/目录。
验证 shell命令 :java -version 看是否与你的版本号一致。

1.6      用root登陆,安装hadoop  (在master) 本人在slave1和slave2也添加了,自己加的。不知可否

#mount –t auto  /dev/sdb  /mnt(U盘挂载可不需要)

#cp hadoop-0.2.0**.tar.z /home/hadoop

#cd /home/hadoop

#tar –vxzf hadoop***.tar.gz  /home/hadoop

修改Master上/etc/profile 新增以下内容:
    export HADOOP_HOME=/home/hadoop/hadoop-0.20.2
    export PATH=$PATH:$HADOOP_HOME/bin

执行

#source /etc/profile 来使其生效

1.7      用root登陆,安装hadoop  (在master)

配置conf/hadoop-env.sh文件

#添加 export JAVA_HOME=

/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 这里修改为你的jdk的安装位置。

测试hadoop安装:(以hadoop用户)

hadoop jar hadoop-0.20.2-examples.jar wordcount  conf/   /tmp/out

1.8      集群配置(所有节点相同)或者在master配置好,拷贝到其它机器

1.8.1        配置文件:conf/core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
  <property>
     <name>fs.default.name</name>
     <value>hdfs://master:49000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/hadoop_home/var</value>
  </property>
</configuration>

1)  fs.default.name是NameNode的URI。hdfs://主机名:端口/

2)  hadoop.tmp.dir :Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。

1.8.2        配置文件:conf/mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>master:49001</value>
</property>

<property>
  <name>mapred.local.dir</name>
 <value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>

1)mapred.job.tracker是JobTracker的主机(或者IP)和端口。主机:端口。

1.8.3        配置文件:conf/hdfs-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>dfs.name.dir</name>

<value>/home/hadoop/name1 </value>

<description> </description>

</property>

<property>

<name>dfs.data.dir</name>

<value>/home/hadoop/data1 </value>

<description> </description>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

</configuration>

1)   dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
2)   dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
3)dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

注意:此处的name1name2data1data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。

1.8.4        配置masters和slaves主从结点

配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。

vi masters:
输入:

node1

vi slaves:

输入:
node2
node3

配置结束,把配置好的hadoop文件夹拷贝到其他集群的机器中,并且保证上面的配置对于其他机器而言正确,例如:如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh

$ scp -r /home/hadoop/hadoop-0.20.2 [email protected]: /home/hadoop

$ scp -r /home/hadoop/hadoop-0.20.2 [email protected]: /home/hadoop

1.8.5        Root改变目录权限(master、slave1、slave2)(此步骤可有可无)

#cd /home/

#chown -R hadoop:hadoop hadoop

#chmod ugo+rwx hadoop

1.9    hadoop启动

注意事项:

格式化、启动hadoop,只需在master启动即可,slave会随着master启动自动启动。人工无需操作slave。

1.9.1        (hadoop用户)格式化一个新的分布式文件系统

(关闭每一台的IPTABLE等防火墙)

先格式化一个新的分布式文件系统
$ bin/hadoop namenode -format
成功情况下系统输出:

12/02/06 00:46:50 INFO namenode.NameNode:STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ubuntu/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.203.0
STARTUP_MSG:   build =http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203-r 1099333; compiled by ‘oom‘ on Wed May 4 07:57:50 PDT 2011
************************************************************/
12/02/0600:46:50 INFO namenode.FSNamesystem: fsOwner=root,root
12/02/06 00:46:50 INFO namenode.FSNamesystem:supergroup=supergroup
12/02/06 00:46:50 INFO namenode.FSNamesystem:isPermissionEnabled=true
12/02/06 00:46:50 INFO common.Storage: Imagefile of size 94 saved in 0 seconds.
12/02/06 00:46:50 INFO common.Storage: Storagedirectory /opt/hadoop/hadoopfs/name1 has been successfully formatted.
12/02/06 00:46:50 INFO common.Storage: Imagefile of size 94 saved in 0 seconds.
12/02/06 00:46:50 INFO common.Storage: Storagedirectory /opt/hadoop/hadoopfs/name2 has been successfully formatted.
12/02/06 00:46:50 INFO namenode.NameNode:SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode atv-jiwan-ubuntu-0/127.0.0.1
************************************************************/

查看输出保证分布式文件系统格式化成功
执行完后可以到master机器上看到/home/hadoop//name1和/home/hadoop//name2两个目录。在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。

1.9.2        (hadoop用户)启动所有节点

启动方式1

$ bin/start-all.sh (同时启动HDFS和Map/Reduce)
系统输出:

starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-ubuntu.out
node2: starting datanode, loggingto /usr/local/hadoop/logs/hadoop-hadoop-datanode-ubuntu.out
node3: starting datanode, loggingto /usr/local/hadoop/logs/hadoop-hadoop-datanode-ubuntu.out
node1: starting secondarynamenode,logging to /usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-ubuntu.out
starting jobtracker, logging to/usr/local/hadoop/logs/hadoop-hadoop-jobtracker-ubuntu.out
node2: starting tasktracker,logging to /usr/local/hadoop/logs/hadoop-hadoop-tasktracker-ubuntu.out
node3: starting tasktracker,logging to /usr/local/hadoop/logs/hadoop-hadoop-tasktracker-ubuntu.out
As you can see in slave‘s output above, it will automatically format it‘s storage directory(specified by dfs.data.dir) if it is not formattedalready. It will also create the directory if it does not exist yet.

执行完后可以到master(node1)和slave(node1,node2)机器上看到/home/hadoop/hadoopfs/data1和/home/hadoop/data2两个目录。

启动方式2

启动Hadoop集群需要启动HDFS集群和Map/Reduce集群。

在分配的NameNode上,运行下面的命令启动HDFS:
$ bin/start-dfs.sh(单独启动HDFS集群)

bin/start-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动DataNode守护进程。

在分配的JobTracker上,运行下面的命令启动Map/Reduce:
$bin/start-mapred.sh (单独启动Map/Reduce)

bin/start-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动TaskTracker守护进程。

1.9.3        关闭所有节点

从主节点master关闭hadoop,主节点会关闭所有从节点的hadoop。

$ bin/stop-all.sh

Hadoop守护进程的日志写入到 ${HADOOP_LOG_DIR} 目录 (默认是 ${HADOOP_HOME}/logs).

${HADOOP_HOME}就是安装路径.

1.10 测试

注意:如果是在windows客户端访问。请在c:\windows下的host加入master、slave1等ip。

1)浏览NameNode和JobTracker的网络接口,它们的地址默认为:

NameNode - http://node1:50070/
JobTracker - http://node2:50030/

3)   使用netstat  –nat查看端口49000和49001是否正在使用。

4)  使用jps查看进程

要想检查守护进程是否正在运行,可以使用 jps 命令(这是用于 JVM 进程的ps 实用程序)。这个命令列出 5 个守护进程及其进程标识符。

5)将输入文件拷贝到分布式文件系统:
$ bin/hadoop fs -mkdir input
$ bin/hadoop fs -put conf/core-site.xml input

运行发行版提供的示例程序:
$ bin/hadoop jar hadoop-0.20.2-examples.jar grep input output ‘dfs[a-z.]+‘

6.补充
Q: bin/hadoop jar hadoop-0.20.2-examples.jar grep input output ‘dfs[a-z.]+‘ 什么意思啊?
A: bin/hadoop jar(使用hadoop运行jar包) hadoop-0.20.2_examples.jar(jar包的名字) grep (要使用的类,后边的是参数)input output ‘dfs[a-z.]+‘
整个就是运行hadoop示例程序中的grep,对应的hdfs上的输入目录为input、输出目录为output。
Q: 什么是grep?
A: A map/reduce program that counts the matches of a regex in the input.

查看输出文件:

将输出文件从分布式文件系统拷贝到本地文件系统查看:
$ bin/hadoop fs -get output output
$ cat output/*

或者

在分布式文件系统上查看输出文件:
$ bin/hadoop fs -cat output/*

统计结果:
[email protected]:~/hadoop/hadoop-0.20.2-bak/hadoop-0.20.2#bin/hadoop fs -cat output/part-00000
3       dfs.class
2       dfs.period
1       dfs.file
1      dfs.replication
1       dfs.servers
1       dfsadmin

其它查看工具

namenode 上用 java 自带的小工具 jps 查看进程

[[email protected]~]$/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/bin/jps

18978 JobTracker

21242 Jps

18899 SecondaryNameNode

18731 NameNode

在每个 datanode 上查看进程

[[email protected] ~]$ /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/bin/jps

17706 TaskTracker

20499 Jps

17592 DataNode

[[email protected] ~]$ /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_644/bin/jps

28550 TaskTracker

28436 DataNode

30798 Jps

在 namenode 上查看集群状态:

[[email protected]]$ hadoop dfsadmin -report

Configured Capacity: 123909840896 (115.4 GB)

Present Capacity: 65765638144 (61.25 GB)

DFS Remaining: 65765257216 (61.25 GB)

DFS Used: 380928 (372 KB)

DFS Used%: 0%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

Datanodes available: 2 (2 total, 0 dead)

时间: 2024-08-05 21:43:53

Hadoop配置过程实践!的相关文章

Hadoop配置过程!

1             Hadoop配置 注意事项:关闭所有防火墙 服务器 IP 系统 Master 10.0.0.9 Centos 6.0 X64 Slave1 10.0.0.11 Centos 6.0 X64 Slave2 10.0.0.12 Centos 6.0 X64 Hadoop版本:hadoop-0.20.2.tar.gz 1.1      在master:(在slave1和slave2上操作和以下相同) #vi /etc/hosts        三台机器相同配置 10.0.0

Hadoop的配置过程(虚拟机中的伪分布模式)

1引言 hadoop如今已经成为大数据处理中不可缺少的关键技术,在如今大数据爆炸的时代,hadoop给我们处理海量数据提供了强有力的技术支撑.因此,了解hadoop的原理与应用方法是必要的技术知识. hadoop的基础原理可参考如下的三篇论文: The Google File System, 2003 MapReduce: Simplified Data Processing on Large Clusters, 2004 Bigtable: A Distributed Storage Syst

腾讯大规模Hadoop集群实践

腾讯大规模Hadoop集群实践 转自:http://www.csdn.net/article/2014-02-19/2818473-Tencent-Hadoop ID lishilong404740787 TDW是腾讯最大的离线数据处理平台.本文主要从需求.挑战.方案和未来计划等方面,介绍了TDW在建设单个大规模集群中采取的JobTracker分散化和NameNode高可用两个优化方案. TDW(Tencent distributed Data Warehouse,腾讯分布式数据仓库)基于开源软

大规模Hadoop集群实践:腾讯分布式数据仓库(TDW)

TDW 是腾讯最大的离线数据处理平台.本文主要从需求.挑战.方案和未来计划等方面,介绍了TDW在建设单个大规模集群中采取的 JobTracker 分散化和 NameNode 高可用两个优化方案. TDW(Tencent distributed Data Warehouse,腾讯分布式数据仓库)基于开源软件 Hadoop 和 Hive 进行构建,打破了传统数据仓库不能线性扩展.可控性差的局限,并且根据腾讯数据量大.计算复杂等特定情况进行了大量优化和改造. TDW服务覆盖了腾讯绝大部分业务产品,单集

Hadoop配置文档

预节 在这一节中,笔者主要向大家介绍了该配置文档中,所用到的Linux命令和Linux的帮助. 终端提示信息 在Linux中,终端的每一行都有提示信息,其包含了当前终端登录的用户,当前登录的主机,当前终端所在的目录. 如:[[email protected] ~]$其格式为:[[用户名]@[hosts主机名或主机ip [当前所在路径]]$解析后可以知道,例子给的提示,实际上代表的是:当前终端登录的主机为master,所有的操作都是针对master的,登录主机的用户为frank,当前终端cd命令进

Hadoop技术内幕——Hadoop配置信息处理

配置系统是复杂软件必不可少的一部分,org.apache.hadoop.conf.Configuration在Hadooop各个子项目中发挥着重要作用. windows系统广泛使用一种特殊批的ASCII文件.ini作为其主要配置文件标准,被称为(Initialization File)或概要文件(profile):java中JDK提供了java.util.Properties类处理简单的配置文件.而Hadoop采用自己独有的配置文件管理系统. Hadoop的配置文件的根元素是configurat

【原创 Hadoop&amp;Spark 动手实践 8】Spark 应用经验、调优与动手实践

[原创 Hadoop&Spark 动手实践 7]Spark 应用经验.调优与动手实践 目标: 1. 了解Spark 应用经验与调优的理论与方法,如果遇到Spark调优的事情,有理论思考框架. 2. 把调优的过程,进行动手实践,完成一些调优的优化过程,加深理解. 3. 做一个完整的调优的案例,再次加深自己对Spark调优的理解.

Hadoop配置信息处理

1 配置文件简介 配置文件是一个灵活系统不可缺少的一部分,虽然配置文件非常重要,但却没有标准. 1.1 Java配置文件 JDK提供了java.util.Properties类,用于处理简单的配置文件.Properties很早就被引入到Java的类库中,并且一直没有什么变化.它继承自Hashtable,表示了一个持久的属性集,该集可保存在流中或从流中加载.属性列表中每个键及其对应值都是字符串类型. public class Properties extends Hashtable<Object,

LoadRunner远程监测Centos服务性能配置过程

由于公司的需要,经过一段时间的探索,参考了很多业内人士的文档,终于完成LoadRunner远程监测centos服务器的配置过程. 首先监测所需要服务是否存,如果存在就不必要安装,如果不存在,需要安装对应的服务. 监测是否有rsh服务:server 监听的TCP 是514,输入命令netstat -an |grep 514 如果返回tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN表明rsh服务器已经启动.如果没有安装则需要下载2个RPM包,rsh-0.17-14.i386.