由于一些原因,有三个基本闲置的服务器,分别是Vultr和DigitalOcean的。同学的同学正好要做简单的WordCount程序当毕设,来找我帮忙。自己对Hadoop也很感兴趣,于是就开始入坑了。
三个主机运行的都是Ubuntu系统,这个历史遗留问题就不便更改为CentOS了。首先是建立ssh密钥登陆,自己一直用的是这种登陆方法,所以这里就不赘述了。master上生成的密钥分别传给两个slave的~/.ssh/authorized_keys
,在这里直接搬过来历史记录。
206 ssh-keygen -t rsa
207 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
209 cat ~/.ssh/authorized_keys
211 ssh-copy-id -i ~/.ssh/id_rsa.pub root@4.3.3.2
214 ssh-copy-id -i ~/.ssh/id_rsa.pub root@16.7.0.1
215 cat ~/.ssh/id_rsa.pub
在主机的/etc/hosts
为两台从机的IP设置别名为slave1 slave2
。这里的原理和访问网站差不多,基本格式像这样:
/etc/hosts
***.***.***.*** slave1
***.***.***.*** slave2
访问测试再搬一下历史记录
216 ssh slave2
249 ssh slave1
250 ssh slave2
288 cat ~/.ssh/id_rsa.pub
然后设置 hostname,这是在ubuntu上的修改方式。
master为例说明
vi /etc/hostname
HOSTNAME=hadoop-master
这一步没问题的话就可以安装JDK了
安装JDK的最简单的方法应该是 sudo apt-get update ; sudo apt-get install default-jdk
,但是我实际上安装的是Oracle JDK,安装命令如下:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt install oracle-java8-set-default
在三台机器上都安装JDK8之后,使用java -version
验证一下即可
安装Hadoop,在Google上面搜索Hadoop,进入官网,复制2.7.5版本的Binary下载链接,然后使用wget下载,比如。
wget http://mirror.metrocast.net/apache/hadoop/common/hadoop-2.7.5/hadoop-2.7.5.tar.gz
链接不久会失效,到时候自己搜一下。
然后设置Hadoop的JAVA_HOME
sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
打开环境设置文件,在JAVA_HOME的下面添加这样一条命令
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
就完成了
Hadoop环境搭建
配置hadoop-master的hadoop环境
1、hadoop-master上 解压缩安装包及创建基本目录
tar -xzvf hadoop-2.7.3.tar.gz -C /usr/local
2、 配置hadoop-master的hadoop环境变量
1)配置环境变量,修改配置文件vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使得hadoop命令在当前终端立即生效
source /etc/profile
然后配置HOSRT_NAME
这一步很重要,要不然Hadoop启动时会找不到主机
vi /etc/sysconfig/network
HOSTNAME=hadoop-master
以下修改的文件都在/usr/local/hadoop/etc/hadoop/目录下
core-site.xml
<configration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temportary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:9000</value>
</property>
</configration>
hdfs-site.xml
<configration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
</configration>
cp marped-site.xml.template mapred-site.xml
<configration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://hadoop-master:9001</value>
</property>
</configration>
yarn-site.xml
<configration>
<!-- Site specific YARN configration properties -->
<property>
<name>yarn.nademanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hastname</name>
<value>hadoop-master</value>
</property>
</configration>
配置masters文件 该文件指定namenode节点所在的服务器机器。删除localhost,添加namenode节点的主机名hadoop-master;不建议使用IP地址,因为IP地址可能会变化,但是主机名一般不会变化。
vi /usr/local/hadoop/etc/hadoop/masters
## 内容
hadoop-master
配置slaves文件(Master主机特有)
修改/usr/local/hadoop/etc/hadoop/slaves文件,该文件指定哪些服务器节点是datanode节点。删除locahost,添加所有datanode节点的主机名,如下所示。
vi /usr/local/hadoop/etc/hadoop/slaves
## 内容
slave1
slave2
slave3
配置hadoop-slave的hadoop环境
复制hadoop到hadoop-slave1节点
scp -r /usr/local/hadoop hadoop-slave1:/usr/local/
登录hadoop-slave1服务器,删除slaves内容
rm -rf /usr/local/hadoop/etc/hadoop/slaves
2)配置环境变量
vi /etc/profile
内容
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使得hadoop命令在当前终端立即生效;
source /etc/profile
依次配置其它slave服务
启动集群
1、格式化HDFS文件系统
进入master的 hadoop目录,执行以下操作
bin/hadoop namenode -format
格式化namenode,第一次启动服务前执行的操作,以后不需要执行。
2、然后启动hadoop:
sbin/start-all.sh
3、使用jps命令查看运行情况
master 执行 jps查看运行情况
25928 SecondaryNameNode
25742 NameNode
26387 Jps
26078 ResourceManager
#slave 执行 jps查看运行情况
24002 NodeManager
23899 DataNode
24179 Jps
4、命令查看Hadoop集群的状态
通过简单的jps命令虽然可以查看HDFS文件管理系统、MapReduce服务是否启动成功,但是无法查看到Hadoop整个集群的运行状态。我们可以通过hadoop dfsadmin -report进行查看。用该命令可以快速定位出哪些节点挂掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。
hadoop dfsadmin -report
输出结果:
Configured Capacity: 50108030976 (46.67 GB)
Present Capacity: 41877471232 (39.00 GB)
DFS Remaining: 41877385216 (39.00 GB)
DFS Used: 86016 (84 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
5、hadoop 重启
sbin/stop-all.sh
sbin/start-all.sh