部署一份Hadoop系统做一些探索,当然只是toy,不是生产环境。确认jdk的版本在1.5以上,推荐1.6。如果在redhat上,装完后可以可能还需要设置环境变量:
export JAVA_HOME=/usr/java/jdk1.6.0_18
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使用一台机器作为namenode和jobtracker是为master,其他几台机器作为datanode和tasknode是为slaves
这里这样配置:机器Node1作为master,机器Node3和Node4作为slaves。
首先,为所有机器建立同一用户名,比如hadoop,为了部署方便,可以通过设置authorized_keys保证master和slaves之间ssh调用不需要输入密码。
然后,解压下载的apache-hadoop-r0.21.0.tar.gz包到主目录,为了维护方便,链接到 ~/hadoop, 为了升级后不影响配置文件,可以把~/hadoop/conf复制出来为~/hadoop-conf。
接下来的配置可先在在master机器上进行,然后部署到其他slaves上:
一、设置环境变量,配置 ~/.bashrc
export HADOOP_CONF_DIR=$HOME/hadoop-conf
export HADOOP_HOME=$HOME/hadoop
二、配置 hadoop-conf 中的配置文件
1) 配置 ~/hadoop-conf/hadoop-sites.xml
<configuration>
<property>
<name>heartbeat.recheck.interval</name>
<value>5000</value>
</property>
</configuration>
2) 配置 ~/hadoop-conf/core-sites.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://Node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp/</value>
</property>
</configuration>
3) 配置 ~/hadoop-conf/hdfs-sites.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/name/</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data/</value>
</property>
<property>
<name>dfs.block.size</name>
<value>67108864</value>
<description>The default block size for new files.</description>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.web.ugi</name>
<value>hadoop,supergroup</value>
</property>
</configuration>
4) 配置 ~/hadoop-conf/mapred-sites.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>Node1:9001</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>~Xmx512m</value>
</property>
</configuration>
5) 配置 ~/hadoop-conf/hadoop-env.sh (可选)
export JAVA_HOME=/usr/java/jdk1.6.0_18
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
6) 部署到其他slaves上,例如:
$ scp ~/.bashrc Node3:~/
$ scp -r ~/hadoop-xxx Node3:~/
$ scp -r ~/hadoop-conf Node3:~/
部署完成,测试一下是否可用:
$ cd ~/hadoop
$ bin/hadoop namenode -format
$ bin/start-dfs.sh
测试一下文件操作
$ bin/hadoop dfs -copyFromLocal <local-directory> <remote-directory>
$ bin/hadoop dfs -ls
$ bin/hadoop dfs -ls <remote-directory>
$ bin/hadoop dfs -cat <remote-file>
同时,也可以通过Web UI查看Hadoop运行状态
- http://node1:50030/ – web UI for MapReduce job tracker(s)
- http://node1:50060/ – web UI for task tracker(s)
- http://node1:50070/ – web UI for HDFS name node(s)
创建init.d启动脚本,这样可以保证hadoop随服务器开机启动。