hadoop安装前需要安装java。java安装这里就不多介绍。然后去hadoop官网下载hadoop source包。下载下来后把他放到你想安装的位置。比如,解压到c盘:
安装路径我这里安装了两个版本,你选择一个就可以了。然后将安装路径添加到系统环境变量中。那么安装结束。
hadoop简单配置方式基本一致,主要配置四个文件,core-site.xml, yarn-site.xml, hdfs-site.xml和mapred-site.xml(路径在 hadoop-xxx/etc/hadoop目录下)。
四个配置文件从名字上我们可以看出他们的作用,core核心的意思,core-site.xml 主要是hadoop的核心配置文件。(这里我们使用伪分布式,文章最后会给出完全分布式配置)
主要内容如下:
core-site.xml当然这里只指定了两个标签属性,还有其他标签属性。如果有特殊需要可以参考hadoop配置标签文档。
hdfs-site.xml 从名字上可以看出是hdfs的配置。配置内容如下:
hdfs-site.xml这里主要配置hdfs的备份数量,namenode的物理地址,和datanode的物理位置。还有其他需要的话可以参考hadoop配置文档。这里如果只是伪分布式搭建学习用已经足够了。
mapred-site.xml 是mapreduce任务执行管理的配置文件。从2.x之后mapreduce任务执行控制交由yarn来管理所以这里只需要指定,任务交给yarn管理就好了。
mapred-site.xmlyarn-site.xml这是任务调度器yarn的配置文件。文件内容如下:
yarn-site.xml这里的配置文件配置只是简单的伪分布式。具体配置可以更加需求添加配置属性。配置好后。在hadoop/bin 目录下执行: hdfs namenode -format 格式化namenode。记得在格式化前 把 配置文件中指定的几个路径创建好。并且具有可读可写权限。
然后 在sbin目录下执行 start-all (当然 windows系统和linux有差别,windows执行的是.cmd结尾的文件 linux执行的是.sh结尾的文件。 打开sbin目录你会发现好多 start开头的文件 和stop结尾的文件。start-all就是把需要启动的这些start-xxx一次启动。当然不是所有!!!!你启动后会发现 windows下跳出了 四个框体,那就是启动的四个任务。)
至此,伪分布式配置好了。
但是有时会报错:比如java环境找不到。这是因为,windows环境默认安装java在 program files文件夹,中间有个空格。这是hadoop找不到java的关键。所以修改hadoop-env.cmd中JAVA_HOME:改为
JAVA_HOMEPROGRA~1 就是 program files。
还比如:namenode报错,id不一致,那是因为 多次执行hdfs namenode -format.导致。可以删除data,name。重新格式化一次。
完全分布式的配置。和伪分布式差不多只是有微小差别。
core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml其中,Master这是我配置完全分布式的主节点名。
其中,还需要配置的还有slaves文件夹。
slaves配置的是从节点。这两个是我配置的从节点名字。在/etc/hosts文件夹中添加 ip映射。
hosts最好把第一行注释掉,否则你会发现一个头疼的错误,怎么都找不到192.168.157.129:port这个地址。因为你如果用netstat -nlpt就会发现。启动的是 127.0.0.1 Master所以第一行注释掉。
文件配置好后 把hadoop整个文件发送到 Master slave 上。然后添加环境配置。
/etc/profile添加 hadoop path。这里我没有添加,其实最好把 hadoop的配置路径也加进去。
export HADOOP_CONF_DIR=/usr/hadoop/etc/hadoop
export PATH=$PATH:$HADOOP_CONF_DIR
因为后续会用到FileSystem.get()这个方法。你读源码会发现,他需要加载core-site.xml文件。如果不添加这个路径,他找不到我们配置的文件在哪。所以可能会报错。如果windows安装,最好也添加到系统变量中。不过你还是会发现,例如idea,eclipse等找不到。这是你可以将路径添加到classpath中。
找不到的表现是:var fs = FileSystem.get(new Configuration())
fs.gerUri == file:///
(这是用scala写的。)
配置好后,最好对mater->slave 做ssh免密登录。不做也可以,但是每次启动和关闭会要求你密码验证。麻烦!!!
在ssh上执行 ssh-keygen -t rsa 以后一直回车到最后。
我是用root执行指令的。cd ~/.ssh
在目录下:有
ssh执行cat ida_rsa.pub >> authorized_keys
然后把 ida_rsa.pub发送到 各个slave 节点 ~/.ssh 目录下也执行cat ida_rsa.pub >> authorized_keys
这样就配置好了。
然后在master上执行,hdfs namenode -format
然后start-all。至此结束。
如果有问题。或者写不到的地方麻烦指正。第一次写 写的不好见谅。
网友评论