准备工具:
腾讯云服务器:三台master,node1,node2,
操作系统ubuntu16.04LTS
jdk-8u161-linux-x64.tar.gz
hadoop-2.7.5.tar.gz
安装步骤:、
1、初始化三台服务器,使得host主机之间可以通过相互ping通。
2.安装jdk和配置环境变量,检查是否配置成功
3、配置ssh,实现节点间的无密码登录 ssh node1/2指令验证时候成功
4、master配置hadoop,并将hadoop文件传输到node节点
5、配置环境变量,并启动hadoop,检查是否安装成功,执行wordcount检查是否成功。
1.购买云服务器并且配置安全组,分配主机角色
开放端口说明:windows类端口开放方便用windows登陆和使用,这里推荐winscp和putty,软件下载和使用在网上都能找得到
linux22口开放是为了各个主机之间能互相联通,ping命令,ssh免密码登陆
主机一公网ip master
主机二公网ip node1
主机三公网ip node2
(注意别配成内网IP就行了)
主机用户自己创建或者初始化那个就行,少用root用户,以免出现问题
2.修改主机的hostname和hosts文件
#修改hostname的指令:
sudo vi /etc/hostname
#修改hosts指令:
sudo vi /etc/hosts
#将以下内容添加到hosts中
主机1公网ip master
主机2公网ip node1
主机3公网ip node2
(注意:这里的主机1公网IP是你云服务器的主机公网ip,别照搬,会出错的,修改文件用vi和gedit都行)
如图所示:(修改主机名主节点改成master,数据节点改成node1,node2)
如图所示:(给每台主机的hosts文件添加内容)
4.检验各个主机之间能否连通
ping +主机名
如果都成功ping通,进行下面的操作。
5.安装jdk和配置环境变量
分别在每台主机上安装jdk,并配置环境变量。
1)下载jdk安装包(自行百度),并用winscp将安装包拖入到云主机上去当中(具体使用教程百度就行)
2)通过cd命令进入到安装包的当前目录,利用如下命令进行解压缩。
tar -zxvf jdk.....(安装包名称)
3)利用如下命令将解压后的文件夹移到/opt目录下
#注意,这样移动到/opt以后就没有jdk1.8...这个目录了,是将这个目录下的所有文件全部移动到/usr/java下,
mv jdk1.8...(文件夹名称) /opt
(这时候可能有权限限制,使用改变文件所属用户组和对文件操作命令即可修改
chown ubuntu(主机名)/opt
chmod 777 -R /opt
)
4)配置环境变量sudo vi /etc/profile
在末尾加上:
export JAVA_HOME=/opt/jdk1.8.0_161
export CLASSPATH=$JAVA_HOME/lib/
export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin输入如下命令使配置生效:source /etc/profile
同时再用ava和javac命令试一下,一防万一。 出现如上没有报错,则说明java环境配置成功。
6.配置SSH,实现节点间的无密码登录
1..安装ssh sudo apt-get install openssh-server 已有ssh或者安装成功了的输入命令(云主机一般都会提前安装ssh的) ps -e | grep ssh验证SSH是否成功安装输入
ssh localhost
如下图所示即为成功:
3.生成密钥Pair
ssh-keygen -t rsa
输入之后一直选择enter即可。生成的秘钥位于 ~/.ssh文件夹下。可用cd 命令进入查看。
4.在master上,导入authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
5.远程无密码登录(把master上的authorized_keys拷贝到其他主机的相应目录下)
#进入master的.ssh目录,执行复制操作
scp authorized_keys @node1:~/.ssh/
scp authorized_keys @node2:~/.ssh/
修改各台主机上authorized_keys文件的权限:
所有主机上,均执行命令:
chmod 600 .ssh/authorized_keys
完成之后,在master上执行下面操作,检查免密码登录是否成功。
ssh node1(node2)
此时,重启所有的云主机,让更改生效
7.master配置hadoop,然后将master的hadoop文件传送给node节点
1)解包移动
- #解压hadoop包
- tar -zxvf hadoop...
- #将安装包移到/usr目录下
- mv hadoop... /opt
2)新建文件夹
- #在/opt目录下新建如下目录
- mkdir filehadoop/dfs
- mkdir filehadoop/dfs/name
- mkdir filehadoop/dfs/data
- mkdir filehadoop/tmp
3)配置文件:hadoop-env.sh(文件都在/usr/hadoop/etc/hadoop中)
修改JAVA_HOME值(export JAVA_HOME=/opt/jdk1.8.0_161)修改JAVA_HOME值(export JAVA_HOME=/opt/jdk1.8.0_161)
5)配置文件:slaves
将内容修改为:
node1
node2
6)配置文件:core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://master:9000</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/usr/hadoop/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- </configuration>
7)配置文件:hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>master:9001</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/usr/hadoop/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/usr/hadoop/dfs/data</value>
- </property>
- <property>
- <name>dfs.replication</name>
- <value>2</value>
- </property>
- <property>
- <name>dfs.webhdfs.enabled</name>
- <value>true</value>
- </property>
- </configuration>
8)配置文件:mapred-site.xml
进入到/opt/hadoop2.7.5目录下:
cp etc/hadoop/mapred-site.xml.template /opt/hadoop2.7.5/etc/hadoop/mapred-site.xml
vi etc/hadoop/mapred-site.xml
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>master:10020</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>master:19888</value>
- </property>
- </configuration>
9)配置文件:yarn-site.xml
- <configuration>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
- <value>org.apache.hadoop.mapred.ShuffleHandler</value>
- </property>
- <property>
- <name>yarn.resourcemanager.address</name>
- <value>master:8032</value>
- </property>
- <property>
- <name>yarn.resourcemanager.scheduler.address</name>
- <value>master:8030</value>
- </property>
- <property>
- <name>yarn.resourcemanager.resource-tracker.address</name>
- <value>master:8031</value>
- </property>
- <property>
- <name>yarn.resourcemanager.admin.address</name>
- <value>master:8033</value>
- </property>
- <property>
- <name>yarn.resourcemanager.webapp.address</name>
- <value>master:8088</value>
- </property>
- </configuration>
10)将hadoop传输到node1和node2 /opt目录,(如果传输时报错说 :权限拒绝,先把文件传送到非/opt目录下,然后在node上把这个文件再移动到/opt)
scp -r /opt/hadoop2.7.5 @node1:/opt
7、配置环境变量,并启动hadoop,检查是否安装成功
1)配置环境变量
#编辑/etc/profile
sudo vi /etc/profile
#以上已经添加过java的环境变量,在后边添加就可以
- #hadoop
- export HADOOP_HOME=/opt/hadoop-2.7.5
- export PATH=$PATH:$HADOOP_HOME/sbin
- export PATH=$PATH:$HADOOP_HOME/bin
执行
source /etc/profile
使文件生效。
2)启动hadoop,进入hadoop安装目录
bin/hdfs namenode -format
sbin/start-all.sh
3)启动后分别在master, node下输入jps查看进程
看到下面的结果,则表示成功
master节点:
datanode:
此时Hadoop集群基本搭建成功!!!!
可能遇到的问题:
1、在修配置完ssh免密码登录后,忘记reboot重启所有服务器
2、所有节点启动正常,无报错,但用jps查看时发现master节点除了jps其他hadoop进程都没启动
修改方法:将主节点的关于端口的IP配置,都将相应的master修改成0.0.0.0
或者发现datanode链接不上master的9000端口,解决方案如下:
例如:
配置文件:core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://master:9000</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/usr/hadoop/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- </configuration>
将其修改成为:
配置文件:core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://0.0.0.0:9000</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/usr/hadoop/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- </configuration>
修改地址是127.0.0.1,只有自己服务器本地可以访问,其他的来源ip是无法访问的,0.0.0.0代表的是公网地址,所有地址均可以访问。
其他关于master的配置文件都按这个改即可!!!
。