1、 安装JDK
a) 从http://www.oracle.com/technetwork/java/javase/downloads/index.html上下载Linux下的JDK安装文件jdk-6u30-linux-i586.bin。
b) 将JDK安装文件复制到一个本地的目录下,本人选择了/opt目录。
c) 执行
sudo sh jdk-6u30-linux-i586.bin (若无法执行首先要chmod+x jdk-6u30-linux-i586.bin)
d) 安装完毕后,修改/etc/environment文件,
sudo vi /etc/environment
在其中添加
PATH=”……:<jdk所在目录>/bin”
CLASSPATH=”.:<jdk所在目录>/lib”
JAVA_HOME=”<jdk所在目录>”
e) 然后
source ~/.bashrc
f) 重启terminal,如果是ssh登录的话,先退出,再重新登录。
g) java -version
应该就能看到所安装的jdk的信息。
在每台集群中的机器上都如上述所示,安装JDK。
2、 在集群的每台机器上都新建用户hadoop
a) sudo adduser --ingroup adminhadoop
密码等信息任意。
将所新建的hadoop用户加入admin用户组,这样该用户就拥有的sudo权限,这样在设置时比较方便。
如果发现新建用户错误,则可以利用
userdel –r <username>
命令删除用户。
b) 接着将hadoop安装文件hadoop-0.20.203.0rc1.tar.gz复制每台机器的hadoop用户的主目录下,并执行
tar xzf hadoop-0.20.203.0rc1.tar.gz
解压得到hadoop-0.20.203.0目录。
3、 配置ssh,使master机器可以无密码ssh访问自己和其他机器
a) 此步骤在最终作为master的机器上运行,需保证每台机器上都安装有ssh服务器和客户端,如果没有安装则可以通过执行
sudo apt-get install ssh 和sudo apt-get installopenssh-server 命令来进行安装。
b) 首先执行命令
ssh-keygen –t rsa (提示输入路径直接选择默认的路径,密码为空)
形成公私钥对,分别存放在~/.ssh/id_rsa.pub和~/.ssh/id_rsa中。
首先,将id_rsa.pub复制到本机的~/.ssh/authorized_keys下。
如果原来authorized_keys已经存在,则执行
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 将公钥追加到authorized_keys中。
如果原来该文件不存在,直接将id_rsa.pub复制即可
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
这样通过ssh访问本机
ssh localhost
就不需要密码了。
c) 将master机上生成的公钥id_rsa.pub添加到其他机器的authorized_keys中,也是不存在authorized_keys则复制,存在authorized_keys则追加公钥。(可能有时候在其他机器上并不存在~/.ssh目录,这时可以手动新建一下这个目录,也可以在该机器上利用ssh登录一下其他机器)。
d) 最后,可以尝试在master机器上的hadoop用户可以无密码登录其他机器的hadoop用户。
4、 hadoop的各种配置文件的配置过程
假设现在存在三台机器,他们的任务和ip地址分别为:
11.0.0.107 namenode、jobtracker、secondarynamenode、datanode、tasktracker
11.0.19.115 datanode、tasktracker
11.0.19.45 datanode、tasktracker
a) hadoop的配置文件都存在<hadoop安装文件>/conf目录下,如hadoop-0.20.203.0/conf目录下。
b) 配置文件目录下几个比较重要的配置文件如下(需要配置):
hadoop-env.sh | hadoop启动时所需要的一些环境变量的设置,其中比较常用的环境变量的设置就是JAVA_HOME。 |
---|---|
core-site.xml | hadoop一些核心内容的设置,其中包括HDFS和MapReduce的基本设置。 |
hdfs-site.xml | HDFS的配置。 |
mapred-site.xml | MapReduce的设置。 |
masters | secondary namenode的主机名或是IP地址,在hadoop中jobtracker和namenode的主机的确定是由hadoop的启动脚本在哪台机器上运行决定的。 |
slaves | datanodes和tasktrackers的主机名或是IP地址。 |
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<!-- Putsite-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name> //HDFS的URI名称的前缀,默认的文件系统
<value>hdfs://11.0.0.107</value>
<final>true</final>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_home</value> //hadoop临时文件目录
</property>
</configuration>
d) hdfs-site.xml 的配置
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<!-- Putsite-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/name1,/home/hadoop/name2</value> // namenode存储meta信息的目录,指定多个目录,每个目录中都会有一份该信息
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data1,/home/hadoop/data2</value> // datanode存储数据块的目录,指定多个目录,数据在多个目录间选择一个存储
</property>
<property>
<name>dfs.replication</name>
<value>2</value> // 存储文件的份数
</property>
</configuration>
e) mapred-site.xml的配置
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<!-- Putsite-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>11.0.0.107:8021</value> //jobtracker服务运行的IP地址或主机名和端口号,端口号应该要指定
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/hadoop_home</value>//MapReduce存储中间数据的目录
</property>
</configuration>
另外mapred.system.dir也可以进行设置,所设定的目录中存放着DistributedCache等共享文件。
配置文件配置完成后,将整个conf目录复制到每台机器上的<hadoop安装目录> hadoop-0.20.203.0下。
5、 启动HDFS和MapReduce
a) 在master主机上进行操作。
b) 建立HDFS文件系统
bin/hadoop namenode –format
c) 启动HDFS
bin/start-dfs.sh
d) 启动MapReduce
bin/start-mapred.sh
e) 如果启动成功,可以通过jps命令查看当前运行参数,也可通过浏览器访问http://11.0.0.107:50030/和http://11.0.0.107:50070/了解MapReduce和HDFS的运行情况。
f) 如果需要停止HDFS和MapReduce则可通过
bin/stop-dfs.sh和bin/stop-mapred.sh
或是bin/stop-all.sh来完成。