例如,如果没有安装ssh,在Ubuntu上可以安装:
$ sudo apt-get install openssh-server $ sudo apt-get install rsyncrsync是远程文件拷贝工具。执行$ netstat -nat查看22端口是否开启了。测试ssh localhost,输入当前用户的密码,回车就ok了。说明安装成功,同时ssh登录需要密码。这种默认安装方式完后,默认配置文件是在/etc/ssh/目录下。sshd配置文件是/etc/ssh/sshd_config。
$ mkdir input $ cp conf/*.xml input $ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' $ cat output/*Hadoop也可以通过伪分布式模式运行在单个节点上,这时每个Hadoop守护进程都是一个单独的Java进程。下面是一个配置实例:
<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>完全分布式模式就是通常多个节点的大规模Hadoop集群。
$cd /home/jackzhou $ssh-keygen -t rsa (一直回车,设置成空密码) $cd .ssh $cp id_rsa.pub authorized_keys测试是否需要密码,若无需密码,则成功:
$ssh localhost或者用$ssh jackzhou-node1,如果不行,则一般是/etc/hosts文件中的IP-主机名映射不正确,修改它使正确的IP地址映射到正确的主机名即可。注意当我们通过主机名来访问机器(不管是本机还以是另外两台远程Slave机器)时,都要在/etc/hosts文件设置好正确的IP-主机名映射,添加两台slave机器的IP-主机名映射。
$scp authorized_keys jackzhou-node2:/home/jackzhou/.ssh/ $scp authorized_keys jackzhou-node3:/home/jackzhou/.ssh/测试ssh jackzhou-node2或者ssh jackzhou-node3(第一次需要输入yes)。如果不须要输入密码则配置成功,如果还须要请检查上面的配置是否正确。
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl"href="configuration.xsl"?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://jackzhou-node1:49000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/jachzhou/hadoop-1.0.4/tmp</value> <description>A base for other temporary directories.</description> </property> </configuration>fs.default.name:是NameNode的URI。hdfs://主机名:端口/
<?xmlversion="1.0"?> <?xml-stylesheettype="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.name.dir</name> <value>/home/jackzhou/name1,/home/jackzhou/name2</value> <description>Name directories</description> </property> <property> <name>dfs.data.dir</name> <value>/home/jackzhou/data1,/home/jackzhou/data2</value> <description>Data directories</description> </property> <property> <name>dfs.replication</name> <!-- 我们的集群有两个结点,所以rep两份 --> <value>2</vaue> </property> </configuration>dfs.name.dir:是NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,NameTable数据将会被复制到所有目录中做冗余备份。
<?xmlversion="1.0"?> <?xml-stylesheettype="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.tracker</name> <value>jackzhou-node1:49001</value> </property> <property> <name>mapred.local.dir</name> <value>/home/jachzhou/hadoop-1.0.4/tmp</value> </property> </configuration>mapred.job.tracker:是JobTracker的主机名(或者IP)和端口。主机:端口。
13/04/05 17:47:47 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = jackzhou-node1/127.0.1.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.0.4 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290; compiled by 'hortonfo' on Wed Oct 3 05:13:58 UTC 2012 ************************************************************/ 13/04/05 17:47:47 INFO util.GSet: VM type = 32-bit 13/04/05 17:47:47 INFO util.GSet: 2% max memory = 19.33375 MB 13/04/05 17:47:47 INFO util.GSet: capacity = 2^22 = 4194304 entries 13/04/05 17:47:47 INFO util.GSet: recommended=4194304, actual=4194304 13/04/05 17:47:52 INFO namenode.FSNamesystem: fsOwner=jackzhou 13/04/05 17:47:52 INFO namenode.FSNamesystem: supergroup=supergroup 13/04/05 17:47:52 INFO namenode.FSNamesystem: isPermissionEnabled=true 13/04/05 17:47:52 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 13/04/05 17:47:52 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 13/04/05 17:47:52 INFO namenode.NameNode: Caching file names occuring more than 10 times 13/04/05 17:47:52 INFO common.Storage: Image file of size 114 saved in 0 seconds. 13/04/05 17:47:53 INFO common.Storage: Storage directory /home/jackzhou/name1 has been successfully formatted. 13/04/05 17:47:53 INFO common.Storage: Image file of size 114 saved in 0 seconds. 13/04/05 17:47:53 INFO common.Storage: Storage directory /home/jackzhou/name2 has been successfully formatted. 13/04/05 17:47:53 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at jackzhou-node1/127.0.1.1 ************************************************************/查看输出保证分布式文件系统格式化成功。执行完后可以到master机器上看到/home/jackzhou/name1和/home/jackzhou/name2两个目录。在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。
$ bin/hadoop fs -mkdir input $ bin/hadoop fs -put conf/core-site.xml input运行发行版提供的示例程序:
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'这条命令意思是使用hadoop命令运行jar包,包名为hadoop-examples-1.0.4.jar,即hadoop示例程序。整个命令就是运行hadoop示例程序中的grep,对应的hdfs上的输入目录为input、输出目录为output。这里的grep是一个MapReduce程序,用来对输入进行正则表达式匹配,匹配正确的结果写到输出中,正则表达式是后边的'dfs[a-z.]+'。