云计算、大数据、互联网的技术交流Q群54224889
一、软件:
stable版本的hadoop包,ssh, rsyn, java
帮助文档:在http://hadoop.apache.org下 -> 左边document->stable下
二、注意问题:
(1) ssh做到不用密码登陆。
(2) hadoop namenode与datanode的关系,也就是master与slave的关系。
(3) hadoop模式:单机/伪分布式,真分布式。
(4) 配置:
core-site.xml主要是namenode(master)的位置;
hdfs-site.xml主要是namenode与datanode的存取位置,数据在哪,hdfs的配置;
mapred-site.xml主要是job.tracker的设置,mapreduce的配置。
(5) 安装/启动hadoop的用户,理论上是不要使用root。但我使用了,还是成功了。还是专业点新建用户hadoop吧。
$ useradd hadoop
设置密码
$ passwd hadoop
(6) hadoop安装的位置,别人都说要建在home下。但我个人觉得什么地方都行,只要每个机器的位置一样就行。
(7)JAVA_HOME的设置,在hadoopXXX/conf/hadoop-env.sh中设置。
(8)看java进程有没有在运行
$ ps -e|grep java
关闭进程:
$ kill -9 pid
三. hadoop是什么?
hadoop包括 分布式文件系统hdfs 和 分布式并行算法mapreduce 二部分。
四. 单机/伪分布式
在官网这说得很清楚 http://hadoop.apache.org/docs/stable/single_node_setup.html
1. 单机
单机就是很简单,下载解压后,设置好JAVA_HOME和localhost就行了。
a. 解压:去到下载文件的文件夹,或把压缩的文件移动到指定文件夹,解压 $ tar xvf hadoop-1.0.4-bin.tar
b. 修改JAVA_HOME: 修改hadoop-env.sh , 修改这一行 export JAVA_HOME=/usr/java/jdk1.6.0_26
c. 修改localhost: ,$ vi /etc/hosts
加上 127.0.0.1 localhost
d. 运行
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
$ cat output/*
有东西就成功。
2. 伪分布式
1.安装
Ubuntu Linux:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
检查是否要密码:
$ ssh localhost
设置不要密码:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
再检查一下是否要密码。
2. hadoop的配置
Configuration
Use the following:
conf/core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
conf/mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
3. 运行
要先格式化
$ bin/hadoop namenode -format
启动
$ bin/start-all.sh
网页查看:
NameNode - http://localhost:50070/
JobTracker - http://localhost:50030/
添加文件到系统
bin/hadoop fs -put conf input
下载文件
$ bin/hadoop fs -get output output
$ cat output/*
查看文件
bin/hadoop fs -cat output/*
关闭
bin/stop-all.sh
五、真分布式
安装目录:opt/hbase/hadoop-1.0.4
linux用户:hadoop
集群结构:1个namenode, 2个datanode
master(192.168.137.128): 作为namenode和datanode
slave1(192.168.137.129): 作为datanode
1.配置hosts
master和slave1都要设置。
192.168.137.128 master
192.168.137.129 slave1
2.设置ssh
检查是否要密码:
$ ssh master
$ ssh slave1
设置不要密码:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
再检查一下是否要密码。
要同步到slave1
scp -r conf slave1:/home/hadoop/.ssh/authorized_keys
3.配置hadoop
hadoop-env.sh文件:
export JAVA_HOME=/usr/java/jdk1.6.0_26
core-site.xml文件:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hbase/hdfs/tmp</value>
</property>
</configuration>
hdfs-site.xml文件:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/opt/hbase/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/hbase/hdfs/data</value>
</property>
</configuration>
mapred-site.xml文件:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/op/hbase/hdfs/mapred/local</value>
</property>
</configuration>
masters文件:
master
slaves文件:
master
slave1
同步到slave1:
$ cd hadoop*
$ scp -r conf slave1:/opt/hbase/hadoop-1.0.4/
4.运行
要先格式化
$ bin/hadoop namenode -format
成功时,在master的dfs.name.dir下有name文件
启动
$ bin/start-all.sh
成功后,在master和slave1的dfs.data.dir文件夹下有data。
查看
http://master:50070
http://master:50030
5、另外:
可以设置多个备份。
hdfs-site.xml文件:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/opt/hbase/hdfs/name1,/opt/hbase/hdfs/name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/hbase/hdfs/data1,/opt/hbase/hdfs/data12</value>
</property>
</configuration>
六、文献
【1】http://hadoop.apache.org/docs/stable/single_node_setup.html
【2】google: Hadoop集群配置(最全面总结)
【3】google: Hadoop:配置-linux-虚拟机Fedora-1master+2slaves - ForA - 博客园