赞
踩
192.168.190.160
192.168.190.161
192.168.190.162
yum install -y epel-release
yum install -y net-tools
yum install -y rsync
yum install -y vim
设置vim /etc/hosts
192.168.190.160 hadoop160
192.168.190.161 hadoop161
192.168.190.162 hadoop162
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #禁用防火墙
### 注意,本地Windows也要配置域名映射:否则浏览器无法浏览和下载文件
192.168.190.160 hadoop160
192.168.190.161 hadoop161
192.168.190.162 hadoop162
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新环境变量:source /etc/profile
useradd hadoop
passwd hadoop
su hadoop
5.2 ssh免密登录
ssh localhost #生成本机的ssh目录
ssh-keygen -t rsa #生成秘钥
#后面是想要免密登录的节点主机名
ssh-copy-id hadoop160
ssh-copy-id hadoop161
ssh-copy-id hadoop162
chown -R hadoop:hadoop /opt/hadoop
5.3 hadoop增加suso权限,root下编辑vim /etc/sudoers
在root下面的wheel增加:hadoop ALL=(ALL) NOPASSWD:ALL
vim /opt/hadoop/hadoop-env.sh
#添加如下内容
export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
export HADOOP_PID_DIR=${HADOOP_HOME}/pid
依次编辑hadoop-env.sh、mapred-env.sh、yarn-env.sh这三个文件,确保它们的内容中都有JAVA_HOME的正确配置:
export JAVA_HOME=/usr/local/java
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop160:8020</value>
<description>指定namenode地址</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/data</value>
<description>指定hadoop的数据存放目录.</description>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
<description>指定网页登录使用的静态用户为hadoop否则无权限操作</description>
</property>
</configuration>
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop160:9870</value>
<description>namenode web访问地址 </description>
</property>
<!-- SecondNameNode web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop162:9868</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- <property>
<name>dfs.permissions.enabled</name>
<value>false</value>
<description>如果为"true",则在HDFS中启用权限检查;如果为"false",则关闭权限检查;默认值为"true"。</description>
</property> -->
<property>
<description>没有Hive可以不加,用于解决hive链接不上的错误。
默认返回给client端datanode的主机名称,这里如果不加的话,dn就会连接不上.</description>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>让MR走shuffle</description>
</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>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop161</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop161:19888/jobhistory/logs/</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!-- master(JobManager)失败重启的最大尝试次数-->
<property>
<name>yarn.resourcemanager.am.max-attempts</name>
<value>4</value>
<description>The maximum number of application master execution attempts.</description>
</property>
<!-- 关闭yarn内存检查 -->
<!-- 是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认为 true -->
<!-- 因为对于 flink 使用 yarn 模式下,很容易内存超标,这个时候 yarn 会自动杀掉 job,因此需要关掉-->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>指定MapReduce jobs.运行在yarn上 Can be one of local,classic or yarn.</description>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop160:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop160:19888</value>
</property>
<!-- hadoop安装路径 -->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
</configuration>
分发文件,-r代表覆盖,【注意】如果两个节点目录相同时,目标目录要比源目录少一层目录才会覆盖,否则不覆盖。
scp -r /opt/hadoop/etc hadoop161:/opt/hadoop
scp -r /opt/hadoop/etc hadoop162:/opt/hadoop
hadoop160
hadoop161
hadoop162
hdfs namenode -format #格式化namenode
【注意:格式化NameNode会产生新的集群id,导致DataNode中记录的的集群id和刚生成的NameNode的集群id不 一致,
DataNode找不到NameNode。所以,格式化NameNode时,一定要先删除每个节点的data目录和logs日志,
然后再格式化NameNode,一般只在搭建初期执行这一次。】
/opt/hadoop/sbin/start-all.sh # 启动集群,resourcemanager需要单独在对应服务器上启动
/opt/hadoop/sbin/stop-all.sh # 停止集群
===单独启动命令:
/opt/hadoop/sbin/start-dfs.sh # 启动hdfs
/opt/hadoop/sbin/start-yarn.sh #启动yarn
# 停止
/opt/hadoop/sbin/stop-dfs.sh
/opt/hadoop/sbin/stop-yarn.sh
单个启动namenode的指令如下 sbin/hadoop-daemon.sh start namenode
单个启动Datanode的指令如下 sbin/hadoop-daemon.sh start datanode
启动yarn命令:yarn --daemon start resourcemanager / nodemanager
历史服务启停 mapred --daemon start historyserver
=====如果resourceManager无法启动,可以查看logs目录下的报错信息,
netstat -tuln | grep <端口号>
mapred --daemon start historyserver
15、*****每个节点使用jps命令验证进程是否正确*****
访问NN的webUI地址 http://192.168.190.160:9870
访问YARN的webUI 地址:http://192.168.190.161:8088
访问历史服务http://192.168.190.160:19888
至此搭建完成,可使用Hadoop自带的脚本测试wordcount
hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /hadoop/input /hadoop/output
在output目录查看计算结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。