初学者之Hadoop分布式环境的搭建
Hadoop的搭建过程全纪录,当然我也是一个初学者,有什么大家可以一起探讨,互相学习。
1、 虚拟机的安装
这里采用vm虚拟机,安装过程网上有很多,可以自行查看
2、 安装linux系统
采用Centos 7作为linux系统,注意选择语言和时间
建立root用户,密码设置为root
3、 JDK的安装
下载好jdk
解压 tar -zxvf jdk-7u71-linux-x64.gz -C /usr/local
mv jdk1.7.0_71 jdk
打开/etc/profile 配置java环境变量
vim /etc/profile
按i进入插入模式,在后面添加如下语句
export JAVA_HOME=/usr/local/jdk
export PATH=PATH:$JAVA_HOME/bin
按esc再按:输入wq保存退出
执行 source /etc/profile 使其生效
输入java -version
出现以下提示则表明安装成功
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
4、 hadoop搭建
三台机器
查看这个机器的ip地址
Ifconfig
Master |
192.168.32.127 |
Namenode |
Resourcemanager |
Slave1 |
192.168.32.128 |
Datanode |
Nodemanager secondarynamenode |
Slave2 |
192.168.32.129 |
datanode |
nodemanager |
设置主机名
vim /etc/hostname
删除里面的内容并分别设置成
master
slave1
slave2
修改hosts,建立主机名和ip地址的映射,每一个占一行
vim /etc/hosts
192.168.32.127 master
192.168.32.128 slave1
192.168.32.129 slave2
配置ssh
ssh-keygen -t rsa
连续4个回车
会root目录生成两个文件,一个公钥一个私钥
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
这样会在slave1 的/root/.ssh/目录下生成一个authorized_keys 就可以实现master免登录到slave1,如下:
ssh slave1
如不需要输入密码,则配置ssh成功
下载好hadoop安装包,并解压,这句话的意思是将hadoop安装包解压到 /opt/soft/目录下
tar -zxvf ./hadoop-2.7.2.tar.gz -C /opt/soft/
将解压后的修改个名字(可以不用做,只是为了方便)
mv hadoop-2.7.2 hadoop
修改hadoop的配置文件群
vi /hadoop/ect/hadoop/hadoop-env.sh
设置JAVA_HOME=/usr/local/jdk
vi core-site.xml
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop/tmp</value>
</property>
</configuration>
vi hdfs-site.xml
<configuration>
<!-- 设置namenode的http通讯地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<!-- 设置secondarynamenode的http通讯地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<!-- 设置namenode存放的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/soft/hadoop/name</value>
</property>
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 设置datanode存放的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/soft/hadoop/data</value>
</property>
</configuration>
mapred-site.xml
没有这个文件,所以先要进行修改
mv mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 设置 resourcemanager 在哪个节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<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>
</configuration>
slaves这占一行,表明datanode节点
slave1
slave2
以上操作完成之后,将jdk和hadoop分别copy到slave1和slave2节点上
copy jdk
scp /usr/local/jdk slave1:/usr/local/
scp /usr/local/jdk slave2:/usr/local/
copy hadoop
scp /opt/soft/* slave1:/opt/soft/
scp /opt/soft/* slave2:/opt/soft/
接着就是格式化
hadoop namenode –format
然后启动hadoop,在hadoop目录下
启动hdfs(nn,dn)
bin/start-dfs.sh
输入jps,会有以下进程
在master上
Jps
namenode
在slave1 和slave2上
Jps
datanode
启动yarn
bin/start-yarn.sh
输入jps,此时以下进程
在master上
Jps
Namenode
Resourcemanager
Secondarynamenode
再slave1和slave2上
Jps
Datanode
Nodemanager
至此就配置完成了