centos7下hadoop环境搭建
来源:互联网 发布:飞科剃须刀怎么样 知乎 编辑:程序博客网 时间:2024/05/22 10:24
centos7下hadoop环境搭建
实验目的:
为5台主机搭建hadoop平台,为之后hbase做准备。
实验步骤:
0x01硬件条件:
5台centos7主机,IP地址:x.x.x.46~50。机器的名称分别为lk,node1,node2,node3,node4。
实验条件默认使用root账户,有需要切回普通用户的情况我会提到。
0x02材料准备
- hadoop安装包
官网下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3-src.tar.gz JAVA环境
由于centos7自带java环境,所以只需要配置JAVA_HOME即可。- 首先输入命令
[root@lk ~]# which java
返回:/usr/bin/java
- 之后输入
[root@lk ~]# ls -lrt /usr/bin/java
返回:lrwxrwxrwx. 1 root root 22 4月 29 2015 /usr/bin/java -> /etc/alternatives/java
- 之后输入:
[root@lk ~]# ls -lrt /etc/alternatives/java
返回lrwxrwxrwx. 1 root root 74 4月 29 2015 /etc/alternatives/java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79-2.5.5.1.el7_1.x86_64/jre/bin/java
- 之后编辑:
[root@lk ~]# vim /etc/profile
添加如下内容:
- 首先输入命令
export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/bin export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79-2.5.5.1.el7_1.x86_64 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$HADOOP_HOME/bin
- 使之生效:
[root@lk ~]# source /etc/profile
- 以后可以验证一下:
[root@lk ~]# echo $JAVA_HOME
返回:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79-2.5.5.1.el7_1.x86_64
代表成功生效
以上配置对本实验失效了。。。原因是openjdk的结构和普通的jdk包结构不太一样,导致有些hadoop有些地方找不到路径
正确配置如下:
- 在jdk的官网上找一款下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 解压到/usr/jdk-9.0.1。
- 配置环境变量:
vim /etc/profile
add:
export JAVA_HOME=/usr/jdk-9.0.1/export CLASSPATH=$JAVA_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin
- 使之生效:
source /etc/profile
0x03环境搭建
- 将下载的hadoop包解压缩在
/usr/hadoop-2.7.3
目录下。
解压后目录为/usr/hadoop-2.7.3/hadoop/
- 创建如下文件夹
mkdir /usr/hadoop-2.7.3/tmp mkdir /usr/hadoop-2.7.3/var mkdir /usr/hadoop-2.7.3/dfs mkdir /usr/hadoop-2.7.3/dfs/name mkdir /usr/hadoop-2.7.3/dfs/data
- 设置环境变量:
vim /etc/profile
- 写入:
export HADOOP_HOME=/usr/hadoop-2.7.3/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
(可能需要和java的PATH合并) - 使之生效:
source /etc/profile
- hadoop配置
- 进入$HADOOP_HOME/etc/hadoop目录,配置 hadoop-env.sh等。涉及的配置文件如下:
hadoop/etc/hadoop/hadoop-env.sh hadoop/etc/hadoop/yarn-env.sh hadoop/etc/hadoop/core-site.xml hadoop/etc/hadoop/hdfs-site.xml hadoop/etc/hadoop/mapred-site.xml hadoop/etc/hadoop/yarn-site.xmlhadoop/etc/hadoop/slaves
具体修改如下: 配置hadoop-env.sh
# The java implementation to use.#export JAVA_HOME=/home/graph/Desktop/javaexport JAVA_HOME=${JAVA_HOME}
配置yarn-env.sh
需要修改JAVA_HOME的路径不能直接用$JAVA_HOME
需要把具体路径敲上去。
# some Java parameters# export JAVA_HOME=/home/y/libexec/jdk1.6.0/export JAVA_HOME=/usr/jdk-9.0.1/
配置core-site.xml
add:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop-2.7.3/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://lk:9000</value> </property></configuration>
注意修改路径和地址。
配置hdfs-site.xml
add:
<property> <name>dfs.name.dir</name> <value>/usr/hadoop-2.7.3/dfs/name</value> <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description></property><property> <name>dfs.data.dir</name> <value>/usr/hadoop-2.7.3/dfs/data</value> <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description></property><property> <name>dfs.replication</name> <value>2</value></property><property> <name>dfs.permissions</name> <value>false</value> <description>need not permissions</description></property></configuration>
配置mapred-site.xml
add:
<configuration><property> <name>mapred.job.tracker</name> <value>lk:49001</value></property><property> <name>mapred.local.dir</name> <value>/usr/hadoop-2.7.3/var</value></property><property> <name>mapreduce.framework.name</name> <value>yarn</value></property></configuration>
配置yarn-site.xml
add:
<configuration><!-- Site specific YARN configuration properties --><property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value></property><property> <name>yarn.resourcemanager.webapp.address</name> <value>10.113.10.46:8099</value></property><property> <name>yarn.resourcemanager.hostname</name> <value>lk</value> </property> <property> <description>The https adddress of the RM web application.</description> <name>yarn.resourcemanager.webapp.https.address</name> <value>${yarn.resourcemanager.hostname}:8090</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>${yarn.resourcemanager.hostname}:8031</value> </property> <property> <description>The address of the RM admin interface.</description> <name>yarn.resourcemanager.admin.address</name> <value>${yarn.resourcemanager.hostname}:8033</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>1537</value> <discription>每个节点可用内存,单位MB,默认8182MB</discription> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value></property></configuration>
配置slaves文件:
vim slaves
node1node2node3node4
配置其他所有节点机器:由于lk是namenode,其余4台为datanode,所以除了最后一步配置slaves,其余完全相同,可以使用
scp -r /usr/hadoop-2.7.3/ xxx@x.x.x.x:~/
完全复制过来。注意台机器还需要配置java环境。最后调整权限,我们是在root权限下进行修改操作,之后需要退回到普通用户权限,但是普通用户默认是不可以修改usr文件夹内容的,所以将
hadoop-2.7.3
文件夹整体提权.具体权限如下:
sudo chown xxx:xxx -R hadoop-2.7.3/
对每台机器都操作一次。
0x04 Hadoop 启动测试
x.x.x.47~50的机器是datanode,不需要进行其他操作,以下在namenode下进行:
进入bin目录,初始化:
./hadoop namenode -format
如果如图所示,没有报错,就说明初始化成功
退出bin目录,进入sbin,执行:
./start-all.sh
- 如果是首次启动,系统会问yes/no,回答yes即可。
- 之后输入jps查看,主节点:
24816 ResourceManager24387 NameNode27619 Jps24635 SecondaryNameNode
slaves节点:
27955 NodeManager30564 Jps27816 DataNode
- 如果结果如上所示,说明成功。
- 如果是首次启动,系统会问yes/no,回答yes即可。
进入网页:
x.x.x.46:8088
查看工作节点- 进入网页:
x.x.x.46:50070
查看概述
0x05错误提示:
- 首先如果jps 其他节点发现没有datanode的话说明配置有问题,可以去子节点的目录下logs文件夹里
hadoop-qsb-datanode-xxx.log
查看出错原因。我这里出现过2次错误,如果有相同问题的话可以直接参照修改。
首先是复制过去的时候新建的那几个文件夹里要空的,如果有东西的话需要手动删除。
其次是权限问题,如果遇到如无法访问的报错的话试着重新执行一遍指令:sudo chown xxx:xxx -R hadoop-2.7.3/
- 诶还有实例需要跑呀,那随便跑一下吧,然后boom,,,运行一个search的实例,具体命令如下:
hadoop dfs -mkdir input //创建input文件夹有的童鞋可能需要加上-phadoop dfs -put /usr/hadoop-2.7.3/hadoop/etc/hadoop/*.xml input //倒入一些文件进去 hadoop dfs -ls input //查看一下文件hadoop jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+' //筛选出格式为dfs*的字符串hadoop dfs -ls outputhadoop dfs -cat output/part-r-00000 //查看输出文件
然后第一次报这个错误:
17/11/17 09:10:24 INFO mapreduce.Job: map 0% reduce 0%17/11/17 09:10:35 INFO mapreduce.Job: map 20% reduce 0%17/11/17 09:10:36 INFO mapreduce.Job: map 60% reduce 0%17/11/17 09:10:38 INFO mapreduce.Job: map 80% reduce 0%17/11/17 09:10:43 INFO mapreduce.Job: map 100% reduce 0%17/11/17 09:10:48 INFO mapreduce.Job: map 100% reduce 7%17/11/17 09:13:40 INFO mapreduce.Job: Task Id : attempt_1510879394295_0002_r_000000_0, Status : FAILEDError: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher#2
可以看到啊,哪个map应该是没啥毛病,然后reduce在7%卡住了,然后过一会报下面的错误,百度一下发现是内存爆炸,结合我当时在yarn-site.xml
里的配置:
<property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>2048</value> <discription>每个节点可用内存,单位MB,默认8182MB</discription> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value></property>
好吧是我的虚拟机太渣了,把第一段去掉,第二段的2048改成1537(最小1536),再试一次成功。
输出应该如下:
17/11/17 20:58:37 INFO mapreduce.Job: map 0% reduce 0%17/11/17 20:59:15 INFO mapreduce.Job: map 67% reduce 0%17/11/17 20:59:37 INFO mapreduce.Job: map 100% reduce 0%17/11/17 20:59:40 INFO mapreduce.Job: map 100% reduce 100%17/11/17 20:59:42 INFO mapreduce.Job: Job job_1510923270204_0002 completed successfully17/11/17 20:59:43 INFO mapreduce.Job: Counters: 50...下面是一些统计信息...
实例跑起来应该没什么问题了吧,之后又问题再改。
对输出如下:
2 dfs.replication1 dfsadmin1 dfs.permissions1 dfs.name.dir1 dfs.data.dir
- centos7下hadoop环境搭建
- Centos7下Hadoop搭建
- Centos7 下 Hadoop 2.6.4 分布式集群环境搭建
- centos7环境下hadoop-2.7.3伪分布式搭建
- Centos7 下 Hadoop 2.6.4 分布式集群环境搭建
- centos7下lamp环境搭建
- CentOS7下PHP环境搭建
- CentOS7环境下搭建ElasticSearch
- CentOS7环境下搭建Kibana
- CentOS7环境下搭建Kafka
- CentOS7环境下搭建flume
- centos7下lamp环境搭建
- 虚拟机下用CentOS7搭建Hadoop集群
- centos7下完全式hadoop集群搭建
- centos7下配置Hadoop全分布式环境
- Centos7下搭建LAMP平台环境
- vmware(centos7)下搭建hadoop2.5.2环境
- CentOS7下Python开发环境搭建
- js---js中的继承方法call、bind、apply,以及三者之间的区别总结。
- python
- C和指针之auto和内存栈和register关键字
- Flask笔记(3)--扩展包Flask-WTF,Flask-Moment
- 22.笔记 MySQL学习——Memory存储引擎
- centos7下hadoop环境搭建
- 674. Longest Continuous Increasing Subsequence
- vmware workstation 14 密钥
- 杭电oj 大鱼吃小鱼
- Apache2.4.23本地访问正常但局域网无法访问 httpd.conf设置
- Vue获取分发内容的宽度
- 机器学习理论篇之CNN 卷积神经网络
- CSS cursor 属性
- 各种jdbc驱动下载