这个搭建其实有很多教程,而且每种搭建方式都不一样,有普通的,也有高可用的,还有各种细节需要注意的,比如要搞一个用户组这些,因为我们这里只有三台虚拟机,就不用多搞那些复杂的,从普通的入手
三台虚拟机,
hadoop01(主机)
hadoop02(从机)
hadoop03(从机)
先将三台虚拟机配置静态IP,这里可能要自己找博客看看了,因为和要和自己的电脑有关的配置,不仅仅是虚拟机了。
所谓具体情况具体分析了,按以下方式配置在你那里可能会遇到坑,电脑反正就是这么神奇
另外三台虚拟机不要装入图形界面,如果以后要做spark的话,记得每个虚拟机的内存3G左右比较好。
还有就是我提供的包和我的版本不一样,因为我的那个版本包不见了,还留了另外一个版本,
然后做好心理准备,那时候我们是花了一个星期搭建平台,做一个单词统计,光装平台搭建平台就重新搞了好几次,当然那也是对linux根本不熟悉,那时候啥都不知道才弄得那么慌。
然后遇到坑把出的错误完整截图过来看看
在 虚拟机目录/etc/hosts中将三台节点信息放在里面
Vi /etc/hosts
第一项是ip地址,第二项是主机的名字
一:JDK安装
我已经在文件夹提供了jdk1.8_201了
将其导入到自己的一个专门的目录下
在我的虚拟机里面我是为了学习这个大数据,专门弄了个app文件夹(这个文件夹我放在了用户目录下,很多人将jdk这种需要环境的都放在了根目录的某个位置),将所有的组件都放着里面了,将jdk放在app下,解压
然后配置环境变量
编辑文件/etc/profile
在里面添加一下内容
使用一下java -version看又没有配置成功
安装hadoop
将我提供的hadoop包搞到自己虚拟机的app目录下进行解压
配置自己的hadoop环境变量
再看看自己的hadoop目录
进入到hadoop的配置目录:cd etc/hadoop
这里有几个需要配置的:
1:core-site.xml
这里有两个配置项,一个是hdfs的默认端口,就是可以通过这个端口访问到hdfs文件系统,这里我是设置的hadoop01的9000端口,hadoop01是我的主机
另外一个就是hadoop运行时候的临时目录,一些临时文件会放在这里
可以自己新建一下,我也不是很记得官网怎么说的了,好像是可以自动建这个目录的
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/app/hadoop-2.8.5/tmp</value>
</property>
</configuration>
2:hdfs-site.xml
这里有三项,按照这个配置就行
第一个配置选项是namenode,这个是指主节点,它的配置是主节点的信息
第二个就是datanode,也就是从节点,是从节点的信息
第三个是高可用的一种配置方法,先配着没事
然后记得在hadoop目录下面将创建节点的数据目录
即安装下面的配置路径创建相应的文件夹
Namenodedir和datanodedir这两个文件夹
这里注意一定要与配置的相符
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/app/hadoop-2.8.5/data/namenodedir</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/app/hadoop-2.8.5/data/datanodedir</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop01:9001</value>
</property>
</configuration>
3:mapred-site.xml
这个是指mapreduce的调度框架
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4:yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
5:slaves vi slaves
hadoop01
hadoop02
hadoop03
Slaves是指配置的三个节点的名字,前提要记得在/etc/hosts中将三台节点的信息放在里面
~
6:在hadoop-env.sh中添加一下内容
即导入自己的jdk位置
到这里基本都配置完成了
三台虚拟机都这样配置
检验一下
进入hadoop目录
进入sbin目录
执行./start-all.sh
然后使用jps命令查看进程,主节点有5个进程,从节点有两个
因为我们在主节点也配置了从节点,所以也会有DataNode进程
主节点:
ResourseManager(yarn的管理进程)
NameNode(主节点进程)
DataNode(从节点)
SecondaryNameNode(这个是高可用的,当主节点挂掉了,可以代替主节点,这里配置了没有什么意义,因为主节点挂了,这个进程也挂了,它也启动不了,生产环境中应该配置在其他节点上)
NodeManager(用于管理节点)
从节点:
DataNode
NodeManager
然后可以在web端看看
常见问题:
1.slave连接不上master就可能防火墙的原因。关闭防火墙.
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
2.如果显示内存JC不足修改以下配置
打开hadoop-env.sh文件,找到HADOOP_HEAPSIZE= 和HADOOP_NAMENODE_INIT_HEAPSIZE= 调整这两个参数,具体调整多少,视情况而定,默认是1000m,也就是一个g,我这里调整如下:
1 2 | export HADOOP_HEAPSIZE=32000 export HADOOP_NAMENODE_INIT_HEAPSIZE=16000 |
然后使用192.168.40.138:50070(即主节点+50070端口)
http://192.168.220.128:8088/cluster
三台虚拟机免密码登录:
1、生成公钥和私钥
在三台虚拟机,执行:
ssh-keygen -trsa
然后,不断的按回车键。
然后在主机中执行hadoop01
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
2、将公钥复制到其他从机
scp ~/.ssh/authorized_keys root@hadoop02:~/.ssh/
scp ~/.ssh/authorized_keys root@hadoop03:~/.ssh/