Hadoop伪分布式环境搭建
这里搭建hadoop基于Ubuntu-16.04.2系统,使用的hadoop版本为hadoop-2.6.0
在VMware中,按典型配置部署了三台Ubuntu虚拟机,所有虚拟机用户名均为hadoop,接下来开始hadoop的配置。
一、配置前的准备操作
1、修改hostname
所有虚拟机中:sudo gedit /etc/hostname对三个虚拟机的hostname进行修改,在这里配置的三台虚拟机名称、ip如下:
用途 | hostname | ip |
---|---|---|
master | hadoop-m | 192.168.175.130 |
slave | hadoop-a | 192.168.175.131 |
slave | hadoop-b | 192.168.175.132 |
2、修改hosts
所有虚拟机中:sudo gedit /etc/hosts对三个虚拟机的hosts根据上面1的配置修改成如下图:
3、安装配置jdk
所有虚拟机中:apt-get install openjdk-8-jdk
安装完成后:sudo gedit /etc/profile添加jdk环境变量:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/
export PATH=$PATH:$JAVA_HOME/bin
这里,jdk默认安装,所以添加的路径如上所示,如果修改了路径,则按照自己安装的路径配置环境变量
修改完成保存该文件后输入source /etc/profile是环境变量的修改立即生效,这时可以通过echo $JAVA_HOME命令查看该环境变量如下图所示:
4、安装配置ssh
所有虚拟机中:apt-get install ssh
安装完成后,所有机器上:
(1)ssh-keygen -t rsa创建空密钥证书,一路回车,不输入任何东西
(2)cd ~/.ssh/
(3)cat id_rsa.pub >> authorized_keys
(4)sudo gedit /etc/ssh/ssh_config:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
注意把前面的#去掉,保存退出
(5)service sshd restart 重启sshd服务
在slave机器上:
scp id_rsa.pub hadoop@192.168.175.130:~/.ssh/id_rsa.pub_sl (此次为首次连接,需要使用密码)
在master机器上:cat id_rsa.pub_sl >> authorized_keys
scp authorized_keys hadoop@192.168.175.131:~/.ssh/
scp authorized_keys hadoop@192.168.175.132:~/.ssh/
在所有机器上:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
完成后通过ssh hadoop-m 可以验证免密登录配置完成。
二、配置hadoop操作
1、在http://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/下载hadoop2.6.0压缩文件,sudo tar -zxvf hadoop-2.6.0.tar.gz 解压hadoop压缩文件,再通过sudo chmod -R 777 hadoop-2.6.0修改该文件夹的访问权限便于后续操作,在这里,将该文件夹解压于home下hadoop文件夹
2、sudo gedit /etc/profile添加hadoop环境变量:
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
如下图所示:
保存修改后,source /etc/profile 使之生效
3、在hadoop-2.6.0文件夹下创建以下文件夹:通过mkdir tmp创建tmp文件夹,类似地,继续创建dfs文件夹,并在该目录下创建data、name两个文件夹。
4、进入hadoop-2.6.0 ->etc ->hadoop文件夹下,sudo gedit hadoop-env.sh,
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
如下图:
source hadoop-env.sh生效
5、同文件夹下, sudo gedit yarn-env.sh,
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
如下图:
source yarn-env.sh生效
6、同文件夹下, sudo gedit slaves,添加slave机器的主机名:
hadoop-a
hadoop-b
如下图:
7、同文件夹下,sudo gedit core-site.xml :
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-m:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop-2.6.0/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
保存修改后,./core-site.xml 生效
8、同文件夹下,sudo gedit hdfs-site.xml :
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop-m:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop-2.6.0/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop-2.6.0/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
保存修改后,./hdfs-site.xml生效
9、同文件夹下,sudo gedit mapred-site.xml :
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop-m:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop-m:19888</value>
</property>
</configuration>
保存修改后,./mapred-site.xml生效
10、同文件夹下,sudo gedit 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>hadoop-m:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop-m:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop-m:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop-m:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop-m:8088</value>
</property>
</configuration>
保存修改后,./yarn-site.xml生效
11、将配置好的hadoop文件夹拷贝到两台slave机器上:
scp -r hadoop-2.6.0/ hadoop@192.168.175.131:~/
scp -r hadoop-2.6.0/ hadoop@192.168.175.132:~/
验证:
1、所有机器上,格式化namenode:
在~/hadoop-2.6.0文件夹下,./bin/hdfs namenode -format
2、启动hdfs:
master主机上:在~/hadoop-2.6.0文件夹下, ./sbin/start-dfs.sh
3、启动yarn:
master主机上:在~/hadoop-2.6.0文件夹下, ./sbin/start-yarn.sh
4、用 jps命令查看安装情况:
到此,hadoop伪分布式环境搭建完毕。