用Hadoop搭建分布式存储和分布式运算集群.doc
文本预览下载声明
用Hadoop搭建分布式存储和分布式运算集群1. 列出使用的机器
普通PC,要求:cpu: 750M-1Gmem: 128Mdisk: 10G不需要太昂贵的机器。
机器名:finewine01finewine02finewine03
将finewine01设为主节点,其它的机器为从节点。
2. 下载和生成
从这里checkout,我选择trunk/repos/asf/lucene/hadoop/使用ant进行生成
3. 部署前的准备工作在主节点的start-all.sh脚本执行后,主节点和从节点的所有服务运行。即这个脚本将启动主节点的服务,并ssh到从所有的节点,继而启动从节点的服务。
start-all.sh这个脚本假定hadoop被安装在所有机器的同一个位置,每一台机器都用同一个路径存放hadoop的数据。
我们需要在每台机器上创建同样的目录结构。/hadoop/hadoop-install/hadoop-0.10.0 hadoop的0.10.0版的安装位置/filesystem hadoop文件系统的根/home 用户hadoop的主目录
以root登录到所有的机器,创建hadoop用户和目录结构。ssh -l root finewine01mkdir /hadoopmkdir /hadoop/hadoop-installmkdir /hadoop/filesystemmkdir /hadoop/homegroupadd hadoopuseradd -d /hadoop/home -g hadoop hadoopchown -R hadoop:hadoop /hadooppasswd hadoop hadooppassword
start-all.sh脚本要启动所有机器的服务,需要对所有的机器进行ssh无密码的登录的能力。因此我们需要在每台机器上创建一个ssh key。在这个例子中,主节点也需要启动自己的服务,因此主节点同样需要做无密码的ssh登录设置。
用vi编辑/hadoop/hadoop-install/hadoop-0.10.0/conf/hadoop-env.sh,将下面的环境变量设置:
export HADOOP_HOME=/hadoop/hadoop-install/hadoop-0.10.0export JAVA_HOME=/usr/java/jdk1.5.0_06export HADOOP_LOG_DIR=${HADOOP_HOME}/logsexport HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
这个文件还有很多变量,这些变量的设定影响hadoop的运行。比如你以后执行脚本时发生ssh错误,就需要调整其中的HADOOP_SSH_OPTS变量。同时需要注意的是,在初始的拷贝操作后,需要在设置hadoop-env.sh文件中的HADOOP_MASTER变量,这样程序才能通过rsync同步主节点的改变到所有的从节点上。
在主节点上创建ssh keys,然后复制到各个从节点上。这些操作必须由先前创建的hadoop用户完成。不要su成hadoop用户来做。开启一个新shell,以hadoop用户的身份登录来完成这些操作。cd /hadoop/homessh-keygen -t rsa (Use empty responses for each prompt)Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /hadoop/home/.ssh/id_rsa.Your public key has been saved in /hadoop/home/.ssh/id_rsa.pub.The key fingerprint is:a6:5c:c3:eb:18:94:0b:06:a1:a6:29:58:fa:80:0a:bc nutch@localhost
在主节点上,拷贝刚才创建的公共key到一个名为authorized_keys的文件:cd /hadoop/home/.sshcp id_rsa.pub authorized_keys
只需在主节点上运行ssh-kegen程序。其他节点的目录结构创建后,将刚才在主节点创建的keys通过scp拷贝到从节点的同样的目录上。scp /hadoop/home/.ssh/authorized_keys hadoop@finewine02:/hadoop/home/.ssh/authorized_ke
显示全部