知识点
相关文章
更多最近更新
更多Nutch+Hadoop环境搭建
2019-03-28 14:17|来源: 网络
以前搭建环境或是配置软件从来都没有留Tips的习惯,但实践证明这是错误的——做过不等于记得怎么做,遇到过的错误也不等于今后就不是错误了。Nutch跟Hadoop的搭建困扰了我很久,但回头看看又觉得真正有些问题的其实就几个关键点,所以觉得花些时间写个简单流程,缅怀一下最近的探索,也希望能给想要搭建Nutch或hadoop的同学提供一些帮助。欢迎大家指正。
想要说明一下的是,虽然说hadoop诞生于nutch,但现在hadoop已经完全独立为一个分布式框架,我们可以简单地理解为nutch只是跑在hadoop基础之上的一个分布式应用程序(实现的功能是开源的搜索引擎:crawl+index+search)。根据我的实践,Nutch+hadoop的配置关键还是在于hadoop环境的搭建。
Hadoop 环境搭建
1. 硬件环境及软件选择
硬件环境:2台Fedora虚拟机(我自己实验的时候用了4台,有两台在另外一位同学的机子上,所以现在就不占用了),机器情况如下表:
计算机名 |
IP |
内存 |
角色 |
Namenode |
172.18.218.34 |
1G |
Namenode+datanode |
Datanode1 |
172.18.218.44 |
512M |
Datanode |
另外,两个linux系统都创建了一个名为hadoop的用户。
至于nutch,我选择的是1.2版本,因为这个版本集成了Hadoop,不用再单独去下载Hadoop,而且兼容性较好。
下载地址:http://apache.etoak.com//nutch/ ,如果有需要,也可以从我这里拷贝。
2. Hosts文件修改
节点之间的通信有时候会用到IP地址,有时候会用到计算机名,所以需要给出节点IP地址跟计算机名的对应,linux系统中这种对应关系体现在/etc/hosts文件中,编辑hosts文件,按“IP 计算机名”的形式把各个节点写进hosts文件。
其中::1这一行是跟IPv6相关的,不需要去理会。其中127.0.0.1这一行是要注释掉的,不然之后运行hadoop的时候会出现“Bad connection to DFS”的错误,DFS是hadoop的文件系统。每次重启系统,hosts文件中都会自动自动加上一行127.0.0.1(原因不解),运行hadoop之前都要把这一行kill掉才行。
对于机器datanode1,hosts文件也要做类似处理。
3. SSH无密码访问
Hadoop集群中节点都是通过ssh相互联系,进行数据传输,我们不可能为每次连接输入访问密码(常规ssh需要访问密码),所以我们需要进行相应配置,使节点之间的ssh连接不需要密码。 我们可以通过设置密钥来实现。
首先在namenode跟datanode上安装ssh(一般情况下已经默认安装了)。
然后在所有的节点(包括namenode跟datanode)上创建公钥私钥。
创建公钥私钥命令: ssh-keygen –t rsa
期间会要求输入一些信息,直接按回车就可以。这样,在默认的路径/home/hadoop/.ssh 目录下创建私钥 id_rsa 和一个公钥 id_rsa.pub 。
对于 datanode 节点:
将自己的公钥发送到 namenode 上:
#cp id_rsa.pub datanode1_rsa.pub
#scp datanode1_rsa.pub 172.18.218.34:/home/hadoop/.ssh
这里需要注意,由于每个 datanode 节点都要将自己的公钥传到 namenode 的相同路径下,因此,各个 datanode 发送的公钥文件名不能相同。这里使用 cp 命令,在每台 datanode 节点上将公钥文件复制为唯一名字的文件。
对于 namenode 节点:
在收到所有 datanode 发送过来的公钥文件之后,要综合这些文件(包括自身),并将这些文件发送到每个节点上:
#cp id_rsa.pub authorized_keys
#cat datanode1_rsa.pub >>authorized_keys
把公钥authorized_keys拷贝到所有节点的.ssh文件夹下:
#scpauthorized_keys 172.18.218.44:/home/hadoop/.ssh
这时一定要查看一下 ssh 配置是否成功,查看方式是使用 ssh 命令: ssh 其他机器 ip ,如果不需要密码就可以登录,就说明配置成功。如果还需要密码,干脆无法登录,则需要重启电脑。重启之后再次使用 ssh 命令,如果还需要密码或者无法登录,则需要重新配置一遍。
相关问答
更多-
在线等!!关于hadoop环境搭建问题[2023-10-24]
1.关闭hdfs权限:hdfs-site.xml中 dfs.permissions false 2.检查eclipse插件是否设置了hadoop安装目录:将与linux下安装的hadoop相同版本的hadoop解压到windows下一个文件夹,然后指定hadoop插件目录,插件目录在preferences的map/reduce的hadoop installation location 3.在windows的hosts文件中添加hadoop所有节点的ip和主机名 4.关闭linux系统防火墙 5.把hadoo ... -
怎么在windows上搭建hadoop环境[2022-06-20]
1、下载安装JDK,以及Eclipse 具体看此链接:http://blog.csdn.net/weixuehao/article/details/17715793 2、新建JAVA Project 3、去cloudera网站下载hadoop的CDH3u6版本。将起解压到win7的某个目录 4、选中OperateHDFS,右击,选择“property”,弹出右侧的窗口; 选择“Java Build Path” —— “Libraries” —— Add External Jars 5、到上面的画面后,下面就 ... -
怎样在本地搭建hadoop测试环境[2024-01-29]
namenode节点配置 conf/core-site.xml: fs.default.name hdfs:// localhost:9000 hdfs测试环境配置 conf/hdfs-site.xml: 数据块不需要冗余 dfs.replication 1 job-tracker配置 conf/mapred-site.xml: mapred.job.tracker localhost:9001 免密码ssh登录配置 $ ssh localhost # 若不行, 则进行以下配置 $ ssh-keygen - ... -
搭建hadoop环境时的网络设置问题[2022-05-05]
你肯定可以把你的宿主机的ip固定下来 而且使用bridge 你的虚拟机也能设置成固定的ip -
hadoop client 环境怎么搭建[2022-11-10]
单节点localhost. 否则就是各节点的hostname,另外要区分你用的是哪个版本的hadoop,最新版本不需要在配置文件里指定哪个是master,只需配置namenode的hostname即可 -
搭建hadoop环境用linux哪个好[2022-03-18]
centOs6,redhat,Ubuntu都行,我个人感觉centOs比较好用,我自己也在用。 -
Phonegap 环境搭建[2023-04-02]
使用PhoneGap搭建Android开发的项目整体步骤如下: 安装android的开发环境并配置环境变量。 安装Node.js环境并配置环境变量。 使用npm安装PhoneGap全局环境。 使用PhoneGap命令创建PhoneGap项目。 将PhoneGap编译为android项目。 将上述项目导入ADT进行后续开发。 具体步骤如下: 一、安装并配置android开发环境: 去下载最新版的ADT到本机,将其解压到相应的目录。 接下来需要配置环境变量,将如下两个路径配置到系统PATH中: A、{ADT_H ... -
我可以解决这个问题。 将文件从本地文件系统复制到HDFS目标文件系统时,它曾经是这样的:bin / hadoop dfs -put~ / nutch / urls urls。 但它应该是“bin / hadoop dfs -put~ / nutch / urls / * urls”,这里urls / *将允许子目录。 I could solve this issue. when copying files from local file system to HDFS destination filesyst ...
-
如果在hadoop上运行nutch,则会生成与每个映射器和每个阶段的reducer相对应的日志。 它的位置是{HADOOP_LOG_DIR}/userlogs/
/syslog If you are running nutch on hadoop, the logs corresponding to each mapper and reducer of each phase is generated. The location of that is {HADOOP_LOG_DIR}/user ... -
nutch的阶段是:Inject - > generate - > Fetch - > Parse - > Update - > Index 其中Fetch阶段是nutch发送url请求的地方(因此我将仅讨论此阶段并在答案中生成阶段。) 生成阶段会在crawldb中创建URL的获取列表。 在创建fetchlist时,属于同一主机的url通常属于同一分区,因为分区功能基于主机名。 因此,最终的获取列表将如下所示: fetch list 1 : all urls of host a1, b1, c1 fetch ...