搭建Hadoop集群
-
安装两个虚拟机(用户名尽量统一为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(注意配置中的路径对应自己的路径,就是之前创建的文件夹)
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/hadoop-2.10.1/hdfs/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration>
-
hdfs-site.xml(注意路径对应,name和data)
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hadoop-2.10.1/hdfs/name</value> <final>true</final> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/hadoop-2.10.1/hdfs/data</value> <final>true</final> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
-
复制mapred-site.xml.template,并命名为mapred-site.xml。然后加入配置
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.address</name> <value>master:18040</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:18030</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:18088</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:18025</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:18141</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
-
配置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
-