终于进入了最核心,同样也是为以后打的最基础的操作——hadoop的集群安装与配置
要问那之前的算什么 emmm
充其量算是虚拟机啦,linux啦,基础环境什么的准备工作
话不多说,正式开始。首先,我们需要去官网下载个hadoop的包,要linux版本的压缩包,应该是以tar.gz为结尾的,至于版本,不要最新的,因为最新的话很可能会出现生态圈开发不完全,与低版本不匹配等情况,我们这里以2.5.2为例
我们将下载好的hadoop-2.5.2.tar.gz通过xshell-xftp传输到master的~/目录下,然后:
1.解压:tar -xvf hadoop-2.5.2.tar.gz
第二步,修改hadoop的配置文件;我们应该都有所了解过,hadoop大体分及部分:hdfs,yarn,mapreduce,common
而这几部分都有一个甚至几个专属于自己的配置文件,当然,也就是hadoop的配置文件。根据我们的不同需求,不同形式当然要选择不同的配置,所以这一部分必然是要修改的。我们这里就说一说最简单的,最基本的书写方式,够用,能跑起来就行了!
1.配置环境变量hadoop-env,sh :cd /hadoop2.5.2/etc/Hadoop/
vi hadoop-env.sh
其中有一段声明JAVA_HOME的代码,改便如下(以我的为例,路径携程你们的JAVA_HOME地址)
# optional. When running a distributed configuration it is best to
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.# The java implementation to use.
export JAVA_HOME=/root/jdk1.8.0_151/# The jsvc implementation to use. Jsvc is required to run secure data
nodes.#export JSVC_HOME=${JSVC_HOME}
2.配置变量yarn-env.sh : vi yarn-env.sh 操作一样,改JAVA_HOME,具体如下:
# resolve links - $0 may be a softlink
export YARN_CONF_DIR="${YARN_CONF_DIR:-$HADOOP_YARN_HOME/conf}"# some Java parameters
export JAVA_HOME=/root/jdk1.8.0_151/
if [ "$JAVA_HOME" != "" ]; then
#echo "run java in $JAVA_HOME"
JAVA_HOME=$JAVA_HOME
fi
if [ "$JAVA_HOME" = "" ]; then
echo "Error: JAVA_HOME is not set."
exit 1
fi
3.配置核心组件core-site.xml : 这里要放一个hdfs的路径地址什么的,所以需要在别处随意选个目录来盛放HDFS,我就另建一个hadoopdata文件夹了
cd
mkdir hadoopdata
cd hadoop2.5.2/etc/hadoop/
vi core-site.xml : 添加内容具体如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopdata</value>
</property>
</configuration>
4.配置文件系统hdfs-site.xml : vi hdfs-site.xml 这里设置每个节点中的数据一共复制几份(hdfs的策略,为了防止数据丢失,每份数据正常是要在默认复制三份放在不同的节点里,正常应该是同一机柜中的相邻结点放一个,相邻机柜中在找两个结点放置备份),当然,一个伪分布式不必认真,总共也没那些结点,就设置一个好了,具体添加内容如下:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
5.配置文件系统yarn-site.xml : vi yarn-site.xml 具体如下:
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
<property> <name>yarn.resourcemanager.address</name> <value>master:8040</value> </property>
<property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property>
<property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8025</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8141</value> </property>
<property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property>
6.配置计算框架mapred-site.xml : cp mapred-sited.xml.template mapred-site.xml
vi mapred-site.xml : 具体如下
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
7.配置slaves文件,里面放置一切slave结点的主机名(存在master节点中hosts里的内种,一行一个)
vi slaves 内容大致如下(以我为例)
slave1
slave2
第三步:hadoop部署
1.把hadoop文件,包括之前的hadoopdata什么的都复制到slave上:
scp -r hadoop-2.5.2 root@slave1:~/
scp -r hadoop-2.5.2 root@slave2:~/
2.配置hadoop环境变量:
cd
vi .bash_profile
export HADOOP_HOME=/root/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
第四步: 第一次需要格式化hdfs文件系统,命令为:hdfs namenode -format
第五步: 启动hadoop 命令为: start-all.sh
第五步: 验证结点启动情况,在master中使用jps命令,显示的数据中必要有:namenode,secondarynamenode,resourceManager,jps
在slave中使用jps命令,出现的数据必要有:datanode,jps
那个没有就代表那个没起来,回去逐步检查,是不是哪里出了问题,哪里字母打错了什么的
第六步:打开hadoop的ui界面验证,在逐季或者虚拟机的浏览器中打开都行,地址为:192.168.1.2:50070
其实最主要的是端口号为50070,前面的ip地址为你给master设置的ip,总的来说就是masterIp:/50070/
登入界面进去后查看lifeNode(活着的节点)和deadNode(死去节点)数目,不要有挂掉的结点就没问题
第七步: 实例运行——求Π值,当然算出来的结果未必正确,但是能跑就行
代码:
cd ~/hadoop-2.5.2/share/hadoop/mapreduce/
hadoop jar ~/hadoop-2.5.2/share/hadoop/mapreduce
/hadoop-mapreduce-examples-2.5.1.jar pi 10 10