设为首页 收藏本站
查看: 551|回复: 0

[经验分享] Apache Hadoop 集群安装文档

[复制链接]

尚未签到

发表于 2017-6-4 10:09:17 | 显示全部楼层 |阅读模式
  
简介:
  Apache Hadoop 集群安装文档
  
  软件:jdk-8u111-linux-x64.rpm、hadoop-2.8.0.tar.gz
  
  http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz



  系统:CentOS 6.8 x64
主机列表及配置信息:
master.hadoop     datanode[01:03].hadoop
CPU:                  8                     4
MEM:                  16G                    8G
DISK:               100G*2                100G*2
  一、系统初始化
  # master.hadoop



shell > vim /etc/hosts
192.168.1.25  master.hadoop
192.168.1.27  datanode01.hadoop
192.168.1.28  datanode02.hadoop
192.168.1.29  datanode03.hadoop
shell > yum -y install epel-release
shell > yum -y install ansible
shell > ssh-keygen  # 生成密钥
shell > ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@datanode01.hadoop"
shell > ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@datanode02.hadoop"
shell > ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@datanode03.hadoop"
shell > vim /etc/ansible/hosts
# datanode.hadoop
[datanode]
datanode[01:03].hadoop
shell > ansible datanode -m shell -a 'useradd hadoop && echo hadoop | passwd --stdin hadoop'
shell > ansible datanode -m shell -a "echo '* - nofile 65536' >> /etc/security/limits.conf"
shell > ansible datanode -m copy -a 'src=/etc/hosts dest=/etc/hosts'  # 同步 hosts
shell > ansible datanode -m shell -a '/etc/init.d/iptables stop && chkconfig --del iptables'  # 关闭防火墙
shell > ansible datanode -m shell -a 'sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config'  # 关闭 SELinux
shell > ansible datanode -m shell -a 'echo 'vm.swappiness = 0' >> /etc/sysctl.conf'  # 修改内核参数
shell > ansible datanode -m shell -a 'echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag'  # 关闭透明大页

shell > ansible datanode -m shell -a 'echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag' >> /etc/rc.local'
shell > ansible datanode -m shell -a 'reboot'
  # 上面的 ansible 操作,master.hadoop 也要执行
  二、时间同步
  # master.hadoop



shell > /bin/cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
shell > yum -y install ntp
shell > /etc/init.d/ntpd stop && chkconfig --del ntpd
shell > ntpdate us.pool.ntp.org | hwclock -w
shell > vim /etc/ntp.conf
# 允许时间同步客户端
restrict 192.168.1.0 mask 255.255.255.0 nomodify
# Server 向谁同步时间
server us.pool.ntp.org prefer
# Server 无法向时间服务器同步时,使用本地时钟
server 127.127.1.0
fudge 127.127.1.0 stratum 10
shell > /etc/init.d/ntpd start
shell > echo -e '\n/usr/sbin/ntpdate us.pool.ntp.org | hwclock -w > /dev/null' >> /etc/rc.local
shell > echo -e '\n/etc/init.d/ntpd start > /dev/null' >> /etc/rc.local
shell > ansible datanode -m shell -a 'yum -y install ntpdate'
shell > ansible datanode -m shell -a '/bin/cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime'
shell > ansible datanode -m shell -a 'ntpdate master.hadoop | hwclock -w'
shell > ansible datanode -m cron -a "name='ntpdate master.hadoop' minute=0 hour=0 job='/usr/sbin/ntpdate master.hadoop | hwclock -w > /dev/null'"
  三、集群部署
  # master.hadoop
  1、安装 jdk、下载、解压 apache hadoop、设置主机间 hadoop 用户无密码登录



shell > rpm -ivh /usr/local/src/jdk-8u111-linux-x64.rpm
shell > echo 'export JAVA_HOME=/usr/java/default' >> /etc/profile && source /etc/profile
shell > tar zxf /usr/local/src/hadoop-2.8.0.tar.gz -C /usr/local/
shell > chown -R hadoop.hadoop /usr/local/hadoop-2.8.0
shell > echo -e '\nexport PATH=$PATH:/usr/local/hadoop-2.8.0/bin' >> /etc/profile && source /etc/profile
shell > su - hadoop
hadoop shell > ssh-keygen
hadoop shell > cat .ssh/id_rsa.pub > .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
hadoop shell > ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 hadoop@datanode01.hadoop"
hadoop shell > ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 hadoop@datanode02.hadoop"
hadoop shell > ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 hadoop@datanode03.hadoop"
  2、配置 apache hadoop
  # 指定 Slave、即 DataNode、NodeManager 角色



hadoop shell > vim /usr/local/hadoop-2.8.0/etc/hadoop/slaves
datanode01.hadoop
datanode02.hadoop
datanode03.hadoop
  # 修改 hadoop-env.sh



hadoop shell > vim /usr/local/hadoop-2.8.0/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/java/default
  # 修改 core-site.xml



<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master.hadoop:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:///data/hadoop/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
  # hadoop 核心配置文件
# 默认加载项 HADOOP_HOME/share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml
  # fs.defaultFS         NameNode IP:PORT,老版本为 fs.default.name
# hadoop.tmp.dir       hadoop 临时目录,很多目录不明确配置时,都基于该目录 ( 默认 /tmp,系统重启时会被删除 ),很重要!
# fs.trash.interval    开启垃圾回收,1440 分钟,默认 0 关闭 ( 用户文件系统级删除的数据会被移到回收站,24小时后被删除 )
# io.file.buffer.size  读写流文件缓存大小,减少IO次数,默认 4096 字节
  # 修改 hdfs-site.xml



hadoop shell > vim /usr/local/hadoop-2.8.0/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/dfs/nn</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///data/dfs/sn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/dfs/dn</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>20</value>
</property>

</configuration>
  # HDFS 配置文件
# 默认加载项 HADOOP_HOME/share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

# dfs.hosts / dfs.hosts.exclude  允许或排除某些 DataNode 连接 NameNode
  # dfs.blocksize                块大小,默认 134217728 ( 128M )
# dfs.replication              默认副本数,数据冗余
# dfs.namenode.name.dir        NameNode 元数据存放位置,可以配置多个目录,以 , 分割,用作数据冗余!
# dfs.namenode.checkpoint.dir  SecondaryNameNode 数据存储目录,该角色负责将 NameNode 的 edit log 合并到 fsimage
# dfs.datanode.data.dir        DataNode   数据存放位置,可以配置多个目录,以 , 分割,数据轮询写入,增加写入速度 ( 多个目录应该对应多个设备 DISK )
# dfs.namenode.handler.count   NameNode 线程数,用于跟 DataNode 通信,默认 10,增大该参数可以优化性能,但是资源也相应提升
  # 修改 yarn-site.xml



hadoop shell > vim /usr/local/hadoop-2.8.0/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master.hadoop</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>${yarn.log.dir}/userlogs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
  # YARN 配置文件
# 默认加载项 HADOOP_HOME/share/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
  # yarn.resourcemanager.hostname         ReSourceManager 主机,其余关于端口的监听都基于该配置项
# yarn.resourcemanager.scheduler.class  资源调度算法,CapacityScheduler 计算能力调度、FairScheduler 公平调度、Fifo Scheduler 先进先出调度
# yarn.nodemanager.log-dirs             nodemanager 日志目录
# yarn.nodemanager.remote-app-log-dir   nodemanager 中间结果保持目录
  # 修改 mapred-site.xml



hadoop shell > cat /usr/local/hadoop-2.8.0/etc/hadoop/mapred-site.xml.template > /usr/local/hadoop-2.8.0/etc/hadoop/mapred-site.xml
hadoop shell > vim /usr/local/hadoop-2.8.0/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master.hadoop:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master.hadoop:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
</configuration>
  # MAPREDUCE 配置文件
# 默认加载项 HADOOP_HOME/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
  # mapreduce.framework.name           使用 yarn 来管理资源
# yarn.app.mapreduce.am.staging-dir  提交作业时的临时目录,提交作业历史目录 mapreduce.jobhistory.done-dir、mapreduce.jobhistory.intermediate-done-dir 都基于该目录



hadoop shell > exit
  3、部署 Slave



shell > ansible datanode -m copy -a 'src=/usr/local/src/jdk-8u111-linux-x64.rpm dest=/usr/local/src/'
shell > yum -y install rsync
shell > ansible datanode -m shell -a 'yum -y install rsync'
shell > ansible datanode -m synchronize -a 'src=/usr/local/hadoop-2.8.0 dest=/usr/local/'
# 我还傻傻的用 copy 模块,结果慢的要死,synchroize 为 rsync 模块,好快!
shell > ansible datanode -m shell -a 'rpm -ivh /usr/local/src/jdk-8u111-linux-x64.rpm'
shell > ansible datanode -m shell -a "echo -e '\nexport JAVA_HOME=/usr/java/default' >> /etc/profile && source /etc/profile"
  四、启动集群
  # master.hadoop



shell > chmod -R a+w /data
shell > ansible datanode -m shell -a 'chmod -R a+w /data'
# 需要给 /data 目录写入权限,否则无法初始化文件系统 hdfs namenode -format
shell > su - hadoop
hadoop shell > hdfs namenode -format  # 初次启动需要格式化文件系统
hadoop shell > sh /usr/local/hadoop-2.8.0/sbin/start-all.sh  # 启动所有服务 / stop-all.sh 关闭服务
hadoop shell > jps
4386 ResourceManager
4659 Jps
3990 NameNode
4204 SecondaryNameNode
  # 这是 master.hadoop 启动的角色
# http://192.168.1.25:50070  # NameNode
# http://192.168.1.25:8088  # ReSourceManagerv
# http://192.168.1.25:10020  # MapReduce JobHistory Server :19888 webui
  # datanode.hadoop



hadoop shell > jps
2508 Jps
2238 DataNode
2351 NodeManager
  # 这是 datanode.hadoop 启动的角色



hadoop shell > hdfs dfs -ls
ls: `.': No such file or directory

hadoop shell > hdfs dfs -mkdir /user
hadoop shell > hdfs dfs -mkdir /user/hadoop
hadoop shell > hdfs dfs -ls
  # 为 hadoop 用户创建家目录
  五、运行示例
  # master.hadoop



hadoop shell > hdfs dfs -put shakespeare.txt  # 上传本地文件到 hdfs
hadoop shell > hdfs dfs -ls
Found 1 items
-rw-r--r--   3 hadoop supergroup    5447165 2017-05-17 16:49 shakespeare.txt
hadoop shell > hadoop jar /usr/local/hadoop-2.8.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar grep shakespeare.txt outfile what
# 执行官方示例,词频统计 ( 统计 what 出现次数 )
hadoop shell > hdfs dfs -ls
drwxr-xr-x   - hadoop supergroup          0 2017-04-11 19:38 outfile
-rw-r--r--   3 hadoop supergroup    5447165 2017-04-11 19:35 shakespeare.txt
hadoop shell > hdfs dfs -cat outfile/*
2309    what
  报错管理:
  1、bin/hdfs namenode -format # 初始化文件系统报错



17/04/01 19:04:29 ERROR namenode.NameNode: Failed to start namenode.
java.io.IOException: Cannot create directory /data/dfs/namenode/current
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:352)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:573)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:594)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:156)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1102)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1544)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1671)
  # 解决方法



shell > chmod -R a+w /data
shell > ansible datanode -m shell -a 'chmod -R a+w /data'
  2、WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable # 迷之警告

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-383399-1-1.html 上篇帖子: spring boot docker 初尝试 下篇帖子: 如何实现两台服务器间无密码的传输数据和操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表