码迷,mamicode.com
首页 > 系统相关 > 详细

mac搭建hadoop环境

时间:2021-03-06 14:17:50      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:license   apach   ref   red   命令   ddr   多个   mapr   src   

安装步骤
1. 修改主机名
sudo scutil --set HostName localhost 
2. ssh免密登录
具体配置方法:
1)ssh-keygen -t rsa (一路回车直到完成) 
2)cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (3)chmod og-wx ~/.ssh/authorized_keys
然后重启终端,在命令行下输入>ssh localhost 如果不需要输密码即可进入,证明设置成功。如果仍需要输入密码,那可能是文件权限的问题,尝试执行 chmod 755 ~/.ssh
3. 安装hadoop
这里安装的是目前最新版本3.2.1
brew install hadoop 
4. 修改配置文件 libexec/etc/hadoop/core-site.xml
在修改配置文件时注意不要有中文字符,如中文空格之类的
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>hadoop.tmp.dir</name><value>file:/usr/local/Cellar/hadoop/3.2.1/libexec/tmp</value></property><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property></configuration>
5. 修改配置文件 libexec/etc/hadoop/hdfs-site.xml
1 <?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>dfs.permissions.enabled</name><value>false</value></property><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/Cellar/hadoop/3.2.1/libexec/tmp/dfs/name</value></property><property><name>dfs.namenode.data.dir</name><value>file:/usr/local/Cellar/hadoop/3.2.1/libexec/tmp/dfs/data</value></property></configuration>
6. 配置hadoop的环境变量
vi ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home export HADOOP_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec export HADOOP_ROOT_LOGGER=DEBUG,console export PATH=$PATH:${HADOOP_HOME}/bin 
source ~/.bash_profile
7. 拷贝lib/native库 libexec目录
注意:在mac环境中,通过brew install hadoop安装时在/usr/local/Cellar/hadoop/3.2.1/libexec目录下是没有/lib/native目录的,如果没有这目录在启动hadoop时会有警告的日志 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。
解决办法有两种:
  1. 下载hadoop的源码自己通过maven编译出lib/native。自己编码麻烦,耗时长,不一定能编译成功。
  1. 在网上找一些别人编译好的,直接放到hadoop中即可。下载lib/native然后放到/usr/local/Cellar/hadoop/3.2.1/libexec目录下,然后再重启。
修改/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/hadoop-env.sh
# 配置Hadoop使用的JDK版本,注意不要使用jdk1.9, 高版本会有问题export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home # 增加导出export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
 
技术图片
8. 格式化HDFS
注意:格式化一次就可以了
cd /usr/local/Cellar/hadoop/3.2.1/bin ./hdfs namenode -format 
9. 启动Hadoop
cd /usr/local/Cellar/hadoop/3.2.1/sbin # 使用start-dfs.sh或者start-all.sh来启动hadoop# 停止 sbin/stop-dfs.sh 或者 sbin/stop-all.sh ./start-dfs.sh 
10. 查看Hadoop是否启动成功
# 查看启动的服务,如果有下面的服务则启动hadoop成功 jps DataNode NameNode SecondaryNameNode
技术图片
技术图片
三:启动yarn
1. 修改配置文件 libexec/etc/hadoop/mapred-site.xml
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
2. 修改配置文件 libexec/etc/hadoop/yarn-site.xml
<?xml version="1.0"?><configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property></configuration>
3. 启动yarn
# 启动ResourceManager 和 NodeManager,启动成功后可以访问http://localhost:8088/cluster# 停止 sbin/stop-yarn.sh# 可以通过start-all.sh 来同时启动start-dfs.sh和start-yarn.sh sbin/start-yarn.sh
技术图片
四:运行Hadoop自带的MapReduce程序(wordcount)
wordcount: 用于统计每个单词出现的次数
# 在HDFS中创建层级目录 bin/hadoop fs -mkdir -p /wordcount/input
# 将hadoop中的LICENSE.txt文件上传到层级目录中 bin/hdfs dfs -put README.txt /wordcount/input
# 查看某个层级目录下面的内容 bin/hdfs dfs -ls /wordcount/input
# 运行hadoop自带的示例程序hadoop-mapreduce-examples-3.2.1.jar 该jar中有多个示例,wordcount是其中一个示例,用于统计每个单词出现的次数,
# /wordcount/input/LICENSE.txt 表示要统计的文件
# /wordcount/output 存放统计结果存放的目录,注意/wordcount/output目录不能存在 bin/hadoop jar /usr/local/Cellar/hadoop/3.2.1/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /wordcount/input/README.txt /wordcount/output
# 查看目录内容,运行完wordcount程序,输出目录下会有一个文件叫part-r-00000,这个就是统计的结果 bin/hdfs dfs -ls /wordcount/output
# 查看统计结果 bin/hadoop fs -cat /wordcount/output/part-r-00000
# 将hdfs指定的目录内容拉到自己机器上 bin/hadoop fs -get /wordcount/output /Users/mengday/Desktop/wordcount
技术图片
技术图片
统计结果part-r-00000
技术图片
http://localhost:9870/ Utilities -> Browse the file system
技术图片
 
技术图片
技术图片
五:hadoop 安装启动问题
1. There are 0 datanode(s) running and no node(s) are excluded in this operation.
有的时候在启动hadoop的时候使用jps查看如果没有启动datanode
原因
当我们使用hadoop namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致。
解决方法
  • 第一种:如果dfs文件夹中没有重要的数据,那么删除dfs文件夹(dfs目录在core-site.xml中hadoop.tmp.dir配置),再重新格式化和启动hadoop即可。此种方式会将数据清空!
hadoop namenode -format sbin/start-dfs.sh 
  • 第二种:如果dfs文件中有重要的数据,那么在dfs/name目录下找到一个current/VERSION文件,记录clusterID并复制。然后dfs/data目录下找到一个current/VERSION文件,将其中clustreID的值替换成刚刚复制的clusterID的值即可;
2. mkdir: Cannot create directory /user. Name node is in safe mode. 可通过执行下面命令执行。
# 离开安全模式 bin/hadoop dfsadmin -safemode leave
3. 运行wordcount示例程序一直循环打印日志updateStatus
ipc.Client: IPC Client (389993238) connection to /0.0.0.0:8032 from mengday got value #80 ipc.ProtobufRpcEngine: Call: getApplicationReport took 1ms security.UserGroupInformation: PrivilegedAction as:mengday (auth:SIMPLE) from:org.apache.hadoop.mapreduce.Job.updateStatus(Job.java:328)
mapred-site.xml去掉mapreduce.framework.name配置,并重启hadoop: sbin/stop-all.sh 和 sbin/start-all.sh。
<configuration><!-- <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> --><property><name>mapreduce.job.tracker</name><value>hdfs://127.0.0.1:8001</value><final>true</final></property><property><name>mapreduce.map.memory.mb</name><value>200</value></property><property><name>mapreduce.reduce.memory.mb</name><value>200</value></property></configuration> 
yarn-site.xml 中增加yarn.resourcemanager.address、yarn.app.mapreduce.am.resource.mb、yarn.scheduler.minimum-allocation-mb配置
<configuration><!-- Site specific YARN configuration properties --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.address</name><value>127.0.0.1:8032</value></property><property><name>yarn.app.mapreduce.am.resource.mb</name><value>200</value></property><property><name>yarn.scheduler.minimum-allocation-mb</name><value>50</value></property><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property></configuration>

mac搭建hadoop环境

标签:license   apach   ref   red   命令   ddr   多个   mapr   src   

原文地址:https://www.cnblogs.com/geogre123/p/14486052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!