首先规划:
三台机器,域名分别是master,slave1,slave2。master上面装NameNode、ResourceManager,slave1和slave2上面装一个NodeManager和DataNode,hadoop的安装包采用Apache的最新稳定版本hadoop-2.9.1。
注:为了方便起见,这里不考虑用户权限的问题,所有安装采用root安装
1.首先是前提条件,三台机器都必须:
(1)首先安装jdk,最好安装1.7及1.7以上版本,并且安装jdk的环境变量
vi ~/.bashrc
export JAVA_HOME=/usr/local/software/jdk1.8.0_141
export PATH=$JAVA_HOME/bin:$PATH
(2)检查ssh和sshd是否安装,如果没有安装,
ubuntu下面安装ssh和sshd:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
如果你用的是redhat,fedora,centos等系列linux发行版,那么使用命令,例如安装sshd:
sudo yum install sshd
检查ssh和sshd是否安装:
sudo service sshd status
开启ssh服务:
sudo service sshd start
2.在hadoop的官网下载hadoop版本http://www-eu.apache.org/dist/hadoop/common/,选择相应的版本进行下载,然后使用winscp工具上传hadoop-2.9.1到master机器上。
3.解压hadoop
tar -zxvf hadoop-2.9.1
4.配置hadoop的环境变量,方便输入命令,vi ~/.bashrc
export HADOOP_HOME=/usr/local/software/hadoop-2.9.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
5.配置
(1)etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
<description>hdfs系统的根目录</description>
</property>
(2)配置etc/hadoop/hdfs-site.xml并创建/usr/local/hdfs/namedir和/usr/local/hdfs/datadir目录
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hdfs/namedir</value>
<description>NameNode存储命名空间和持久化事物日志的路径</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hdfs/datadir</value>
<description>datanode存储block的路径</description>
</property>
(3)etc/hadoop/yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
<description>resourcemanager的ip</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>配置mapreduce的shuffle</description>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
<description>开启日志聚集功能</description>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>3600</value>
<description>配置1个小时聚集一次日志</description>
</property>
(4)etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>hadoop执行框架设置为yarn</description>
</property>
(5)etc/hadoop/slaves
slave1
slave2
6.配置三台机器免密码登录,在master机器上面输入下面的命令
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
$ ssh-copy-id -i slave1
$ ssh-copy-id -i slave2
7.格式化master所在机器的namenode
bin/hdfs namenode -format
8.在master机器上面启动hdfs
start-dfs.sh
jps可以看到的进程有,master上面有一个NameNode和一个SecondaryNameNode,slave1和slave2上面分别有一个DataNode
[root@master hdfs]# jps
27280 NameNode
27494 SecondaryNameNode
27640 Jps
9.在master机器上面启动yarn
start-yarn.sh
jps这个时候可以看到,master上面有一个NameNode和一个SecondaryNameNode,同时新出现一个ResourceManager,slave1、slave2除了有一个DataNode,
同时都新加了一个NodeManager
[root@master hadoop-2.9.1]# jps
27280 NameNode
28612 Jps
27494 SecondaryNameNode
28286 ResourceManager
10.访问http://master:50070,就能看到hdfs的WEB界面
访问http://master:8088,就能看到yarn的WEB界面
11.测试分布式模式下mapreduce单词统计
[root@slave2 input]# cat test.txt
hadoop
hdfs
mapreduce
nodemanager
yarn
hadoop
hdfs
nodemanager
hadoop
yarn
hadoop
1. 在hdfs系统上面创建目录input
hdfs dfs -mkdir /input
2.上传test.txt到hdfs
hdfs dfs -put test.txt /input
3. 在hadoop的home目录下输入命令并回车,bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar wordcount /input /output
4.这个时候可以看见hdfs系统上面生成了一个目录output,查看output里面的内容
[root@master hadoop-2.9.1]# hdfs dfs -text /output/*
hadoop 4
hdfs 2
mapreduce 1
nodemanager 2
yarn 2
如果想直接在yarn的WEB界面上看日志,可以在三台机器上输入命令,启动historyserver
mr-jobhistory-daemon.sh start historyserver
最后,欢迎热爱技术的小伙伴加入我们的聊天群qq:852278138