http://hadoop.apache.org/releases.html
我下载的是 hadoop-2.6.5.tar.gz 这个
2、cd /home/hadoop
mkdir apps (以后hadoop,hive都解压到这里)
把hadoop-2.6.5.tar.gz安装到上传到/home/hadoop
并解压到 apps 里
tar -zxvf hadoop-2.6.5.tar.gz -C apps/
3、cd /home/hadoop/apps/hadoop-2.6.5 可以看下目录
bin 自己的一些操作命令
etc 配置文件
include C语言本地库的一些头文件
lib 本地库,里面是个native
sbin 系统启动管理的命令
share 里面是我们的 文档 和 jar包
4、下面开始修改配置让我们的hadoop跑起来
cd etc/hadoop/
vim hadoop-env.sh 这里要配我们的环境变量
把 export JAVA_HOME=${JAVA_HOME} 因为实际项目中ssh远程方式启动的,读不到本机的JAVA_HOME,这里直接写死
改为
export JAVA_HOME=/usr/local/jdk1.8.0_171 (你自己的jdk解压后的目录)
5、vim core-site.xml
在<configuration>里配置
<configuration>
<property>
<name>fs.defaultFS</name> <!--指定用哪一种文件系统。我们肯定用内置的hdfs了-->
<value>hdfs://shizhan01:9000</value> <!--URI格式,这里是hdfs的namenode,客户端直接访问的是namenode,因为namenode知道客户端要的文件在哪些机器上-->
</property>
<property>
<name>hadoop.tmp.dir</name> <!--自己进程产生的数据要存放的目录-->
<value>/home/hadoop/hdpdata</value>
</property>
</configuration>
6、vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name> <!--副本的数量,客户端如果把文件给到hdfs之后,hdfs如果只保留一份,如果该机器宕机,那文件就拿不到了-->
<value>2</value> <!--默认是3 -->
</property>
</configuration>
7、vim mapred-site.xml.template
<configuration>
<property>
<name>mapreduce.framework.name</name> <!--mapreduce是放在一个资源调度平台上去跑的,这里指定是哪个平台-->
<value>yarn</value> <!--提交完之后,就交给yarn去跑了;如果不填的话,默认是local,模拟单机去跑 -->
</property>
</configuration>
8、vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name> <!--找yarn的老大-->
<value>shizhan01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name> <!--为我们的mapreduce程序提供服务-->
<value>mapreduce_shuffle</value>
</property>
</configuration>
9、把这些东东scp到其他机器上
cd /home/hadoop
scp -r apps shizhan02@:/home/hadoop
scp -r apps shizhan03@:/home/hadoop
scp -r apps shizhan04@:/home/hadoop
10、然后我们要把hadoop的启动命令都配置到profile里
sudo vim /etc/profile
在最后加入
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.5
在export PATH=$PATH:$JAVA_HOME/bin后面加入:
:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
scp到其他机器上
sudo scp /etc/profile shizhan02:/etc/
sudo scp /etc/profile shizhan03:/etc/
sudo scp /etc/profile shizhan04:/etc/
依次source /etc/profile
10、hdfs是一个文件系统,要做格式化
hadoop namenode -format
11、启动一个namenode(我们上面在core-site.xml里配置了namenode在shizhan01这台机器上)
cd /home/hadoop/apps/hadoop-2.6.5/sbin/
hadoop-daemon.sh start namenode
启动好了,jps看一下有没有namenode的进程
然后我们在浏览器访问一下 http://shizhan01:50070 看一下信息
发现都是0,因为我们只是启动了namenode,没有启动datanode和他一起协同工作
那我们来启动一下datanode,其他三台都启动
hadoop-daemon.sh start datanode
jps看下是否启动成功,成功之后,执行
http://shizhan01:50070 再看一下信息
可以看到 Live Nodes 是3, Configured Capacity 是50多G了。
但是现在启动命令都是我们自己手动去执行的,现在是只有三台机器,
如果机器很多呢,我们不可能一台一台去执行的,要写个脚本统一执行,
现在我们把四台机器全部停掉,写个启动脚本吧。
hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop datanode
但是呢,实际上并不需要我们去写
cd /home/hadoop/apps/hadoop-2.6.5/sbin
我们可以看到提供很多命令给我们使用
我们启动 namenode和datanode一般用 start-dfs.sh 这个脚本文件
我们打开该文件来看一下吧
由上面文件可以看到,这个脚本文件会帮我们启动
1、namenode
2、datanodes(默认使用slaves文件)
3、secondary namenode (会帮我们启动两个namenode,避免一台namenode挂掉)
我们去找下启动 datanodes 所需要的 slaves 文件
cd /home/hadoop/apps/hadoop-2.6.5/etc/hadoop
找到 slaves 文件,并打开
可以看到只有个 localhost ;他默认是启动本地的 datanode,
但是我们要启动 shizhan02 03 04上的datanode,所以这里配成
shizhan02
shizhan03
shizhan04
这时我们
cd /home/hadoop/apps/hadoop-2.6.5/sbin
在shizhan01上执行 start-dfs.sh 脚本文件
就会帮我们启动02 03 04 上的datanode,但是还有个问题就是,它是通过
ssh去启动的,所以如果我们不配免密的话,启动过程中要输入密码也是很麻烦的
所以我们配置一下免密,一般我们是在 shizhan01 上执行命令,所以我们就配置
01 -> 01;
01 -> 02;
01 -> 03;
01 ->04;
ssh-keygen
ssh-copy-id shizhan01;
ssh-copy-id shizhan02;
ssh-copy-id shizhan03;
ssh-copy-id shizhan04;
这样就完成了免密的配置,
执行一下脚本文件启动吧
start-dfs.sh
jps看一下启动情况
01上启动了 NameNode 和 SecondaryNameNode
02 03 04 上分别启动了 datanode
访问 http://shizhan01:50070 看一下情况
最后我们
cd /home/hadoop/apps/hadoop-2.6.5/sbin
stop-dfs.sh 自动化帮我们停止 namenode和datanode
这样,我们自动化启停 namenode和datanode 就做好了
最后再看一个图
我们启动dfs+yarn的话,就是 一次启动
start-dfs.sh
start-yarn.sh
但是这个 start-all.sh 呢
可以帮我们一次性启动上面两个
但是他不建议这么做,因为如果启动有问题不好检查
我们执行 start-all.sh 这个看下效果
到此为止,hadoop集群安装就介绍完了。