- 安装两个虚拟机(用户名尽量统一为hadoop)
VMWare
Ubuntu18.04.2
jdk1.8.0_202
hadoop-2.10.1
master ip 192.168.80.138
slave ip 192.168.80.128
- 配置节点ip,为后面ssh准备
-
sudo gedit /etc/hosts
-
如下添加两个节点
-
在slave1上同样
-
- 设置root 账户
- 打开终端输入,sudo passwd root,
- 然后,输入密码并设置root的密码
- 最后在终端输入su,并输入干刚刚设置的密码,即可进入root
- 修改虚拟机名称,
- vim /etc/hostname
- 将ubuntu改成master(从机则改称slave1),重启后生效
- 安装jdk
-
官网下载jdk8,https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
-
在/home/slave1里新建一个java文件夹放jdk , mkdir /home/hadoop/java/
-
将下载的jdk移动到上面新建的文件下,mv Downloads/jdk-8u202-linux-x64.tar.gz /home/hadoop/java/
-
进入到java文件夹内,解压tar -zxvf jdk-8u202-linux-x64.tar.gz
-
- 配置jdk
-
gedit /etc/profile
-
在最后加上如下配置
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_202 export JRE_HOME=/home/hadoop/java/jdk1.8.0_202/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
-
使配置生效 soruce /etc/profile,然后重启,检查java -version是否跳出版本信息,如有则说明安装成功。
-
- 安装ssh
-
终端输入apt-get install openssh-server
-
检查ssh是否启动,终端输入ps -e |grep ssh,如果有sshd,说明已经启动,如果没有,输入service ssh start
-
生成公钥和密钥ssh-keygen -t rsa -P “” ,此步骤不需要再root里操作。生成的文件会放在/home/slave1/.ssh之下
-
进入到/home/slave1/.ssh,将id_rsa.pub加入到授权文件authorized_keys中。cat id_rsa.pub >> authorized_keys
-
登录localhost , ssh localhost , 推出 exit
-
- 以上的步骤在master和其他slave上做一模一样的操作
- 配置master无秘登录slave
-
master主机中复制一份公钥到home. cp .ssh/id_rsa.pub ~/id_rsa_master.pub
-
把master的id_rsa_master.pub拷贝到slave1下。scp /home/hadoop/id_rsa_master.pub slave1:/home/hadoop/
-
在slave1下终端输入 sudo cat id_rsa_master.pub >> .ssh/authorized_keys
-
至此实现了master对slave1的免密登录
-
- 安装hadoop(master上)
-
下载Hadoop,我下载的 hadoop-2.10.1,下载到/home/hadoop
-
解压 tar -zxvf hadoop-2.10.1.tar.gz
-
在 hadoop-2.10.1内创建四个文件夹
· hadoop-2.10.1/hdfs
· hadoop-2.10.1/hdfs/tmp
· hadoop-2.10.1/hdfs/name
· hadoop-2.10.1/hdfs/data
-
- 配置hadoop的配置文件(master)
-
配置文件都在/hadoop2.10.1/etc/hadoop
-
core-site.xml(注意配置中的路径对应自己的路径,就是之前创建的文件夹)
hadoop.tmp.dir file:/home/hadoop/hadoop-2.10.1/hdfs/tmp A base for other temporary directories. io.file.buffer.size 131072 fs.defaultFS hdfs://master:9000 -
hdfs-site.xml(注意路径对应,name和data)
dfs.replication 1 dfs.namenode.name.dir file:/home/hadoop/hadoop-2.10.1/hdfs/name true dfs.datanode.data.dir file:/home/hadoop/hadoop-2.10.1/hdfs/data true dfs.namenode.secondary.http-address master:9001 dfs.webhdfs.enabled true dfs.permissions false -
复制mapred-site.xml.template,并命名为mapred-site.xml。然后加入配置
mapreduce.framework.name yarn -
yarn-site.xml
yarn.resourcemanager.address master:18040 yarn.resourcemanager.scheduler.address master:18030 yarn.resourcemanager.webapp.address master:18088 yarn.resourcemanager.resource-tracker.address master:18025 yarn.resourcemanager.admin.address master:18141 yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.auxservices.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler -
配置hadoop-env.sh和yarn-env.sh的JAVA_HOME
-
配置slave文件
-
配置hadoop环境变量
export HADOOP_HOME=/home/hadoop/hadoop-2.10.1 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
-
将master上的hadoop-2.10.1传到slave1上,然后同样配置slave1的hadoop环境变量(配置文件的路径如果不一样要改)
scp -r /home/hadoop/hadoop-2.10.1/ slave1:/home/hadoop/
-
- 开启hadoop
-
初始化hadoop, hdfs namenode -format
-
start-dfs.sh
-
start-yarn.sh
-
上面两部也可以使用start-all.sh一步运行
-
在master输入jps,如下
-
在slave1输入jps,如下
-
- 搭建完成
测试一下
hadoop jar /home/hadoop/hadoop-2.10.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar pi 10 10
- 增加节点
-
修改hosts
-
修改配置文件
hdfs-site.xml 1->2
slaves +slave2
-



