个人工具
登录
查看“利用Cloudera实现Hadoop”的源代码 - Ubuntu中文
页面
讨论
查看源代码
历史
搜索
导航
首页
最近更改
随机页面
页面分类
帮助
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息
查看“利用Cloudera实现Hadoop”的源代码
来自Ubuntu中文
←
利用Cloudera实现Hadoop
跳转至:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
=== 部署 === 安装好这几台主机的Hadoop环境之后,就要对它们进行分布式运行模式的部署了,首先是设置它们之间的互联。<br> ==== 主机互联<br> ==== Hadoop环境中的互联是指各主机之间网络畅通,机器名与IP地址之间解析正常,可以从任一主机ping通其它主机的主机名。注意,这里指的是主机名,即在Hadoop-01主机上可以通过命令ping Hadoop-02来ping通Hadoop-02主机(同理,要求这几台主机都能相互Ping通各自的主机名)。可以通过在各主机的/etc/hosts文件来实现,具体设置如下:<br> <pre>sudo vi /etc/hosts 127.0.0.1 localhost 10.x.253.201 hadoop-01 hadoop-01 10.x.253.202 hadoop-02 hadoop-02 10.x.253.203 hadoop-03 hadoop-03 10.x.253.204 hadoop-04 hadoop-04 10.x.3.30 firehare-303 firehare-303</pre> 将每个主机的hosts文件都改成上述设置,这样就实现了主机间使用主机名互联的要求。<br> <br> 注:如果深究起来,并不是所有的主机都需要知道Hadoop环境中其它主机主机名的。其实只是作为主节点的主机(如NameNode、JobTracker),需要在该主节点hosts文件中加上Hadoop环境中所有机器的IP地址及其对应的主机名,如果该台机器作Datanode用,则只需要在hosts文件中加上本机和主节点机器的IP地址与主机名即可(至于JobTracker主机是否也要同NameNode主机一样加上所有机器的IP和主机名,本人由于没有环境,不敢妄言,但猜想是要加的,如果哪位兄弟有兴趣,倒是不妨一试)。在这里只是由于要作测试,作为主节点的主机可能会改变,加上本人比较懒,所以就全加上了。:) 注意2:ubuntu 原有的 /etc/hosts 文件中有将本机计算机名解析为 127.0.1.1 的字段,例如: <pre> 127.0.1.1 hadoop-01 </pre> 请务必删除,否则会由于绑定 ip 不正确导致namenode和jobtracker无法连接的问题。 ===== 主机互联的可选方法(配置复杂并不推荐)<br> ===== 如果各个主机使用 dhcp 动态分配地址且不具有网络管理员权限,或者由于 /etc/hosts 文件的修改量过大,对于<b>同一子网</b>中的主机可以通过架设一个 WINS 服务或使用网络中有的 WINS 服务来解决互联问题。相关的包可以通过运行 tasksel 命令,安装 samba client 包获得,安装之后还需要修改 /etc/samba/smb.conf 架设或设置 WINS 服务,并修改 /etc/nsswitch.conf 添加机器名的解析方式。 ==== 计算帐号设置 ==== Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同用户名的帐户。由于这里采用的是Cloudera发布的Hadoop包,所以并不需要这方面的设置,大家了解一下即可。 ==== SSH设置 ==== 在 Hadoop 分布式环境中,主节点(NameNode、JobTracker) 需要通过 SSH 来启动和停止从节点(DataNode、TeskTracker)上的各类进程。因此需要保证环境中的各台机器均可以通过 SSH 登录访问,并且主节点用 SSH 登录从节点时,不需要输入密码,这样主节点才能在后台自如地控制其它结点。可以将各台机器上的 SSH 配置为使用无密码公钥认证方式来实现。 Ubuntu上的SSH协议的开源实现是OpenSSH, 缺省状态下是没有安装的,如需使用需要进行安装。<br> ===== 安装OpenSSH ===== 安装OpenSSH很简单,只需要下列命令就可以把openssh-client和openssh-server给安装好: <pre>sudo apt-get install ssh </pre> ===== 设置OpenSSH的无密码公钥认证<br> ===== 首先在Hadoop-01机器上执行以下命令:<br> <pre>hadoop@hadoop-01:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Enter passphrase (empty for no passphrase):(在这里直接回车) Enter same passphrase again:(在这里直接回车) Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: 9d:42:04:26:00:51:c7:4e:2f:7e:38:dd:93:1c:a2:d6 hadoop@hadoop-01</pre> 上述命令将为主机hadoops-01上的当前用户hadoop生成其密钥对,该密钥对被保存在/home/hadoop/.ssh/id_rsa文件中,同时命令所生成的证书以及公钥也保存在该文件所在的目录中(在这里是:/home/hadoop/.ssh),并形成两个文件 id_rsa,id_rsa.pub。然后将 id_rsa.pub 文件的内容复制到每台主机(其中包括本机hadoop-01)的/home/hadoop/.ssh/authorized_keys文件的尾部,如果该文件不存在,可手工创建一个。 '''注意:id_rsa.pub 文件的内容是长长的一行,复制时不要遗漏字符或混入了多余换行符。'''<br> ===== 无密码公钥SSH的连接测试<br> ===== 从 hadoop-01 分别向 hadoop-01, hadoop-04, firehare-303 发起 SSH 连接请求,确保不需要输入密码就能 SSH 连接成功。注意第一次 SSH 连接时会出现类似如下提示的信息: <pre>The authenticity of host [hadoop-01] can't be established. The key fingerprint is: c8:c2:b2:d0:29:29:1a:e3:ec:d9:4a:47:98:29:b4:48 Are you sure you want to continue connecting (yes/no)? </pre> 请输入 yes, 这样 OpenSSH 会把连接过来的这台主机的信息自动加到 /home/hadoop/.ssh/know_hosts 文件中去,第二次再连接时,就不会有这样的提示信息了。 <br> ==== 设置主节点的Hadoop<br> ==== ===== 设置JAVA_HOME<br> ===== Hadoop的JAVA_HOME是在文件/etc/hadoop/conf/hadoop-env.sh中设置,具体设置如下:<br> <pre>sudo vi /etc/hadoop/conf/hadoop-env.sh export JAVA_HOME="/usr/lib/jvm/java-6-sun" </pre> ===== Hadoop的核心配置<br> ===== Hadoop的核心配置文件是/etc/hadoop/conf/core-site.xml,具体配置如下:<br> <pre><?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.default.name</name> <!-- <value>hdfs://localhost:8020</value> --> <value>hdfs://hadoop-01:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/var/lib/hadoop-0.20/cache/${user.name}</value> </property> </configuration> </pre> ===== 设置Hadoop的分布式存储环境<br> ===== Hadoop的分布式环境设置主要是通过文件/etc/hadoop/conf/hdfs-site.xml来实现的,具体配置如下:<br> <pre><?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <!-- <value>1</value> --> <value>3</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <!-- specify this so that running 'hadoop namenode -format' formats the right dir --> <name>dfs.name.dir</name> <value>/var/lib/hadoop-0.20/cache/hadoop/dfs/name</value> </property> </configuration> </pre> ===== 设置Hadoop的分布式计算环境<br> ===== Hadoop的分布式计算是采用了Map/Reduce算法,该算法环境的设置主要是通过文件/etc/hadoop/conf/mapred-site.xml来实现的,具体配置如下: <pre><?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.tracker</name> <!-- <value>localhost:8021</value> --> <value>hadoop-01:8021</value> </property> </configuration> </pre> ===== 设置Hadoop的主从节点<br> ===== 首先设置主节点,编辑/etc/hadoop/conf/masters文件,如下所示:<br> <pre>hadoop-01 </pre> 然后是设置从节点,编辑/etc/hadoop/conf/slaves文件,如下所示:<br> <pre>hadoop-02 hadoop-03 hadoop-04 firehare-303 </pre> ==== 设置从节点上的Hadoop<br> ==== 从节点上的Hadoop设置很简单,只需要将主节点上的Hadoop设置,复制一份到从节点上即可。<br> <pre>scp -r /etc/hadoop/conf hadoop-02:/etc/hadoop scp -r /etc/hadoop/conf hadoop-03:/etc/hadoop scp -r /etc/hadoop/conf hadoop-04:/etc/hadoop scp -r /etc/hadoop/conf firehare-303:/etc/hadoop </pre>
返回至
利用Cloudera实现Hadoop
。