一.环境准备
1.虚拟机软件: Oracle VM VirtualBox
2.linux系统: centos 7
3.jdk版本: jdk1.8
4.hadoop版本: hadoop3.1.3
5.ssh工具: MobaXterm
二.centos安装
1.安装Oracle VM VirtualBox
下载好Oracle VM VirtualBox安装包之后双击狂点下一步即可
2.安装centos 7
2.1管理
2.2 虚拟介质管理
2.3 注册
2.4 找到下载好的.iso镜像选择打开
2.5 应用关闭
2.6 创建虚拟机
新建
简单配置
简单配置好后点击下一步
最好选择4G运存以上,好之后下一步
三.安装centos7
1.启动
2.镜像选择
3. 开始安装
键盘方向键上下键选择第一个后点击回车
4.选择语言
(提醒:如果想要把鼠标移出窗口,点击右Ctrl即可)
5.开始安装
5.1 安装位置选择
5.2 网络配置
5.3 root用户配置
等待自动重启
安装完成
四. MobaXterm连接虚拟机
1.安装net-tools
1.1 登录centos7
输入账号密码后回车(输入密码时不显示密码)
1.2 安装net-tools
1.3 获取ip
安装好net-tools后输入ifconfig获取ip
记住这个ip
1.4 MobaXterm连接centos7
自行安装好MobaXterm后
输入root账号密码
五.安装启动docker
1.安装
yum install docker -y
2.启动
systemctl start docker
六.docker构建镜像并启动容器
1.创建hadoop目录
2.进入hadoop目录
3.将jdk和hadoop压缩包上传到hadoop目录
4.创建编写docker镜像配置文件
cd hadoop
vi Dockerfile
进入文档后按i键进入编辑状态
写入以下内容
FROM centos:7
# 安装openssh-server和openssh-clients
RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN yum install -y openssh-clients
# 添加用户root,密码root
RUN echo "root:root" | chpasswd
RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 启动sshd服务并且暴露22端口
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
#jdk
ADD jdk-8u162-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_162 /usr/local/jdk1.8
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH
#hadoop
ADD hadoop-3.1.3.tar.gz /usr/local
RUN mv /usr/local/hadoop-3.1.3 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH
写入完成后按esc键退出编辑,输入:wq保存退出
5.在docker容器中构建hadoop镜像
docker build -t 'hadoop' .
6.docker启动多个容器
启动hadoop0作为名称节点,对外开放端口50070和8088
docker run --name hadoop0 --hostname hadoop0 -d -P -p 50070:50070 -p 8088:8088 hadoop
启动两个从节点(数据节点)
docker run --name hadoop1 --hostname hadoop1 -d -P hadoop
docker run --name hadoop2 --hostname hadoop2 -d -P hadoop
七.配置hosts
1.进入名称节点hadoop0
docker exec -it hadoop0 /bin/bash
2.配置hosts文件
vi /etc/hosts
文件中添加以下内容
保存退出后ping其他节点
有数据返回即可,按Ctrl+C强制中断
之后将hosts文件传输到另外两个容器
scp /etc/hosts hadoop1:/etc/
另一个容器hadoop2也类似操作
八.创建ssh无密码登录
1.每个容器创建hadoop用户,并设置密码hadoop
hadoop0:
输入密码时输入两遍即可,我这里输错了所以多来了一遍。hadoop0创建完后退出到容器外
进入容器hadoop1创建hadoop用户,密码依然hadoop
完成后退出到容器外,进行hadoop2容器的操作
完成后退出容器外,进入容器hadoop0
2.ssh无密码登录
进入容器hadoop0后切换到hadoop用户
输入ssh-keygen
然后按一直回车即可
将密钥传入到各个节点(密码为hadoop用户密码 hadoop)
完成后使用ssh 主机名检测是否成功,之后exit回来
很顺利完成
九.hadoop配置文件修改
1.修改hadoop-env.sh文件
添加内容
保存退出后刷新文件
2.修改文件workers
需要把所有数据节点的主机名写入该文件,每行一个。
删掉localhost这行,让hadoop0节点仅作为名称节点使用。
3.修改文件core-site.xml
请把core-site.xml文件修改为如下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
</configuration>
4.hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop0:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
5.修改文件mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop0:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop0:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
</configuration>
6.修改文件 yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop0</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
十.复制hadoop文件到数据节点
scp -rq /usr/local/hadoop/ hadoop1:/usr/local/
scp -rq /usr/local/hadoop/ hadoop2:/usr/local/
十一.格式化
hdfs namenode -format
出现:successfully代表成功
十二.启动hadoop集群
start-all.sh
启动之后输入jps查看进程,少一个都代表出问题
输入hdfs dfsadmin -report
查看数据
出现了两个数据节点,完事。