hadoop—集群维护手册.doc
- 格式:doc
- 大小:53.50 KB
- 文档页数:6
cdh运维手册CDH运维手册是一份详细介绍CDH(Cloudera Distribution of Hadoop)运维过程的指南。
本文旨在帮助运维人员更好地掌握CDH的部署、管理、维护及优化方法,以确保集群稳定高效运行。
I.引言CDH是基于Apache Hadoop的分布式大数据处理平台,包括Hadoop、Spark、Hive、Pig等组件。
在实际应用中,CDH面临着复杂的运维挑战。
为了提高运维效率,降低故障风险,我们需要深入了解CDH的运维流程。
II.CDH简介CDH(Cloudera Distribution of Hadoop)是Cloudera公司推出的一款大数据处理平台。
它包含了Hadoop的核心组件,如HDFS、YARN、MapReduce等,以及一系列数据处理工具,如Spark、Hive、Pig等。
CDH 提供了一整套大数据解决方案,满足企业在数据存储、分析、挖掘等方面的需求。
III.CDH运维流程A.环境搭建:根据业务需求,选择合适的硬件资源、网络环境和操作系统。
搭建CDH集群,包括配置核心组件和相关工具。
B.数据迁移:将原始数据迁移至CDH集群,根据数据特点选择合适的存储格式和压缩算法。
C.运维管理:监控CDH集群的运行状态,包括资源使用情况、任务进度、日志等。
定期进行性能评估,优化集群配置。
D.故障排查:遇到问题时,快速定位故障原因,采取相应措施进行解决。
E.性能优化:针对CDH集群的性能瓶颈,采取调整参数、优化任务流程等措施,提高集群性能。
F.安全防护:确保CDH集群的安全性,防范外部攻击和内部安全风险。
IV.运维工具与技巧A.常用工具:掌握CDH运维过程中所需的常用工具,如Hadoop DistCp、Hive Query、Spark Submission等。
B.自动化脚本:编写自动化脚本,实现批量任务调度、日志收集、性能监控等功能。
C.监控与报警:搭建CDH集群监控系统,实现实时报警,确保问题及时发现并处理。
1软件环境整体情况说明2安装包下载路径3Hadoop2.2安装和配置3.1集群网络环境节点IP地址和主机名分布如下:3.2环境搭建(每台机器都要操作)3.2.1修改HostName(非必须)vim /etc/sysconfig/network修改HOSTNAME为需要的名称重启服务器,进行生效reboot3.2.2设置Host映射文件1.使用root身份编辑/etc/hosts映射文件,设置IP地址与机器名的映射,设置信息如下:vim /etc/hosts172.16.158.24 DashDB01.yun172.16.158.25 spark01.yun172.16.158.26 spark02.yun172.16.158.27 spark03.yun2.使用如下命令对网络设置进行重启/etc/init.d/network restart3.验证设置是否成功3.2.3设置操作系统环境3.2.3.1关闭防火墙在Hadoop安装过程中需要关闭防火墙和SElinux,否则会出现异常1.service iptables status查看防火墙状态,如下所示表示iptables已经开启2.以root用户使用如下命令关闭iptableschkconfig iptables off3.2.3.2关闭SElinux1.使用getenforce命令查看是否关闭2.修改/etc/selinux/config 文件将SELINUX=enforcing改为SELINUX=disabled,执行该命令后重启机器生效3.2.3.3JDK安装及配置赋予vod用户/usr/lib/java目录可读写权限,使用命令如下:sudo chmod -R 777 /usr/lib/java把下载的安装包,上传到/usr/lib/java 目录下,使用如下命令进行解压tar -zxvf jdk-7u55-linux-x64.tar.gz解压后目录如下图所示:使用root用户配置 /etc/profile,该设置对所有用户均生效vim /etc/profile添加以下信息:export JAVA_HOME=/usr/lib/java/jdk1.7.0_55export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/binexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib修改完毕后,使用source /etc/profilejava -version3.2.3.4更新OpenSSLyum update openssl3.2.3.5无密码验证配置1.以root用户使用vim /etc/ssh/sshd_config,打开sshd_config配置文件,开放4个配置,如下图所示:RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysStrictModes no2.配置后重启服务service sshd restart3.使用root用户登录在4个节点,在/home/common目录下,执行命令mkdir .ssh4.使用vod用户登录在4个节点中使用如下命令生成私钥和公钥;sudo chown -R vod .sshssh-keygen -t rsa5.进入/home/common/.ssh目录在4个节点中分别使用如下命令cp id_rsa.pub authorized_keys_DashDB01.yun把公钥命名authorized_keys_DashDB01.yunauthorized_keys_spark01.yunauthorized_keys_spark02.yunauthorized_keys_spark03.yun6.把3个从节点(spark01,spark02,spark03)的公钥使用scp命令传送到DashDB01.yun节点的/home/common/.ssh文件夹中;scp authorized_keys_spark01.yun :/home/common/.ssh最终DashDB01.yun节点中文件如下7.把4个节点的公钥信息保存到authorized_key文件中使用cat authorized_keys_DashDB01.yun >> authorized_keys 命令8.把该文件分发到其他两个从节点上使用scp authorized_keys :/home/common/.ssh把密码文件分发出其余三台机器的.ssh文件包含如下:9.在4台机器中使用如下设置authorized_keys读写权限chmod 775 authorized_keys10.测试ssh免密码登录是否生效3.3配置Hadooop设置3.3.1准备hadoop文件1.把hadoop-2.2.0目录移到/usr/local目录下cd /home/hadoop/Downloads/sudo cp hadoop-2.2.0 /usr/local2.使用chown命令遍历修改hadoop-1.1.2目录所有者为hadoopsudo chown -R vod /usr/local/hadoop-2.2.0chmod 775 -R /usr/local/hadoop-2.2.0/3.3.2在Hadoop目录下创建子目录使用vod用户在hadoop-2.2.0目录下创建tmp、name和data目录,保证目录所有者为vodcd /usr/local/hadoop-2.2.0mkdir tmpmkdir namemkdir datals3.3.3配置/etc/profilesudo vim /etc/profile添加以下内容export HADOOP_HOME=/usr/local/hadoop-2.2.0export PATH=$PATH:$HADOOP_HOME/binexport YARN_HOME=$HADOOP_HOMEexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOMR/etc/hadoop使用命令使其生效source /etc/profile3.3.4配置hadoop-env.sh1.打开配置文件hadoop-env.shcd /usr/local/hadoop-2.2.0/etc/hadoopsudo vim hadoop-env.sh2.加入配置内容,设置了hadoop中jdk和hadoop/bin路径export JAVA_HOME=/usr/lib/java/jdk1.7.0_55export PATH=$PATH:/usr/local/hadoop-2.2.0/bin3.编译配置文件hadoop-env.sh,并确认生效source hadoop-env.sh3.3.5配置yarn-env.sh1.在/usr/local/hadoop-2.2.0/etc/hadoop打开配置文件yarn-env.sh cd /usr/local/hadoop-2.2.0/etc/hadoopsudo vim yarn-env.sh2.加入配置内容,设置了hadoop中jdk和hadoop/bin路径export JAVA_HOME=/usr/lib/java/jdk1.7.0_553.编译配置文件yarn-env.sh,并确认生效source yarn-env.sh3.3.6配置core-site.xml1.使用如下命令打开core-site.xml配置文件sudo vim core-site.xml2.在配置文件中,按照如下内容进行配置<configuration><property><name></name><value>hdfs://172.16.158.24:9000</value></property><property><name>fs.defaultFS</name><value>hdfs://172.16.158.24:9000</value></property><property><name>io.</name><value>131072</value></property><property><name>hadoop.tmp.dir</name><value></value><description>Abase for other temporary directories.</description> </property><property><name>hadoop.proxyuser.hduser.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.hduser.groups</name><value>*</value></property></configuration>3.3.7配置hdfs-site.xml1.使用如下命令打开hdfs-site.xml配置文件sudo vim hdfs-site.xml2.在配置文件中,按照如下内容进行配置<configuration><property><name>node.secondary.http-address</name><value>172.16.158.24:9001</value></property><property><name>.dir</name><value></value></property><property><name>dfs.datanode.data.dir</name><value></value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property><property><name>dfs.permissions</name><value>false</value></property></configuration>3.3.8配置mapred-site.xml1.默认情况下不存在mapred-site.xml文件,可以从模板拷贝一份cp mapred-site.xml.template mapred-site.xml2.使用如下命令打开mapred-site.xml配置文件sudo vim mapred-site.xml3.在配置文件中,按照如下内容进行配置<configuration><property><name></name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>172.16.158.24:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>172.16.158.24:19888</value></property></configuration>3.3.9配置yarn-site.xml1.使用如下命令打开yarn-site.xml配置文件sudo vim yarn-site.xml2.在配置文件中,按照如下内容进行配置<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.resourcemanager.address</name><value>172.16.158.24:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>172.16.158.24:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>172.16.158.24:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>172.16.158.24:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>172.16.158.24:8088</value></property></configuration>3.3.10配置slaves文件1.设置从节点sudo vim slaves修改为spark01.yunspark02.yunspark03.yun3.3.11向各节点分发hadoop程序1.在spark01.yun spark02.yun spark03.yun 机器中创建/usr/local/hadoop-2.2.0目录,然后修改该目录所有权限sudo mkdir /usr/local/hadoop-2.2.0sudo chown -R vod /usr/local/hadoop-2.2.0sudo chmod 775 -R /usr/local/hadoop-2.2.0/2.在DashDB01.yun机器上进入/usr/local/hadoop-2.2.0目录,使用如下命令把hadoop文件夹复制到其他3台使用命令cd /usr/local/hadoop-2.2.0scp -r * :/usr/local/hadoop-2.2.0scp -r * :/usr/local/hadoop-2.2.0scp -r * :/usr/local/hadoop-2.2.03.在从节点查看是否复制成功执行chmod 775 -R /usr/local/hadoop-2.2.0/4.每个节点配置/etc/profilesudo vim /etc/profile添加以下内容export HADOOP_HOME=/usr/local/hadoop-2.2.0export PATH=$PATH:$HADOOP_HOME/binexport YARN_HOME=$HADOOP_HOMEexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport YARN_CONF_DIR=$HADOOP_HOMR/etc/hadoop使用命令使其生效source /etc/profile3.4启动hadoop 3.4.1格式化namenode./bin/hdfs namenode -format3.4.2启动hadoopcd /usr/local/hadoop-2.2.0/sbin ./start-all.sh3.4.3验证当前进行此时执行jps命令在DashDB01.yun上运行的进程有:namenode,secondarynamenode,resourcemanagerspark01.yun spark02.yun 和spark03.yun上面运行的进程有:datanode,nodemanager 4Hive1.2.1安装和配置4.1拷贝项目sudo cp -r /home/common/Downloads/hive-1.2.1/ hive-1.2.1更改文件夹所属sudo chown -R vod /usr/local/hive-1.2.1sudo chmod 775 -R /usr/local/hive-1.2.14.2配置/etc/profilesudo vim /etc/profileexport HIVE_HOME=/usr/local/hive-1.2.1export PATH=$HIVE_HOME/bin:$PATHexport HIVE_CONF_DIR=$HIVE_HOME/confsource /etc/profile4.3配置hive(使用mysql数据源)前提条件:在mysql数据库建立hive用户并赋予相关权限mysql> CREATE USER 'hive' IDENTIFIED BY 'mysql';mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;mysql> flush privileges;cd $HIVE_CONF_DIR/cp hive-default.xml.template hive-site.xmlvim hive-site.xml修改下列参数:<name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://192.168.15.150:3306/hive?createDatabaseIfNotExist=true</value><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><name>javax.jdo.option.ConnectionPassword</name><value>hive</value>执行命令chmod 775 -R /usr/local/hive-1.2.1/4.4启动HiveServer2(后台启动)cd $HIVE_HOME/binnohup hive --service hiveserver2 &测试:netstat -an|grep 10000 或者使用jdbc连接测试4.5测试输入hive命令,启动hivehive> show tables;OKTime taken: 4.824 secondshive> create table hwz(id int, name string);OKTime taken: 0.566 secondshive> select * from hwz;OKTime taken: 0.361 seconds$ hadoop dfs -lsr /user/hiveWarning: $HADOOP_HOME is deprecated.drwxr-xr-x - hadoop supergroup 0 2012-03-22 12:36 /user/hive/warehouse drwxr-xr-x - hadoop supergroup 0 2012-03-22 12:36 /user/hive/warehouse/hwz5Scala安装和配置5.1拷贝安装包cd /usr/libsudo cp /home/common/Downloads/scala-2.10.4.tgz scala-2.10.4.tgz5.2解压安装包sudo tar -xvf scala-2.10.4.tgzsudo rm scala-2.10.4.tgz给scala文件夹赋予相应的权限sudo chown -R vod /usr/lib/scala-2.10.4 sudo chmod 775 -R /usr/lib/scala-2.10.4 5.3配置/etc/profile sudo vim /etc/profileexport SCALA_HOME=/usr/lib/scala-2.10.4 export PATH=$PATH:$SCALA_HOME/bin source /etc/profile5.4向每台机器分发cd /usr/libsudo mkdir scala-2.10.4sudo chown -R vod /usr/lib/scala-2.10.4 sudo chmod 775 -R /usr/lib/scala-2.10.4 scp -r * :/usr/lib/scala-2.10.45.5配置/etc/profile sudo vim /etc/profileexport SCALA_HOME=/usr/lib/scala-2.10.4 export PATH=$PATH:$SCALA_HOME/binsource /etc/profile5.6检测scala -version6Spark安装和配置6.1在master上安装并配置Sparksudo cp -r /home/common/Downloads/spark-1.5.1/ spark-1.5.1sudo chown -R vod /usr/local/spark-1.5.1sudo chmod 775 -R /usr/local/spark-1.5.1●设置SPARK_EXAMPLES_JAR 环境变量sudo vim /etc/profileexport SPARK_HOME=/usr/local/spark-1.5.1export PATH=$PATH:$SPARK_HOME/binexportSPARK_EXAMPLES_JAR=$SPARK_HOME/lib/spark-assembly-1.5.1-hadoop2.2.0.jarsource /etc/profile●在conf/spark-env.sh 中设置cd $SPARK_HOME/confmv spark-env.sh.template spark-env.shsudo vim spark-env.shexport JAVA_HOME=/usr/lib/java/jdk1.7.0_55export SCALA_HOME=/usr/lib/scala-2.10.4export SPARK_MASTER_IP=172.16.158.24export SPARK_MASTER_PORT=7077export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT} export SPARK_MEM=16gexport SPARK_WORKER_MEMORY=32gexport SPARK_WORKER_CORES=12source spark-env.sh●在conf/slaves, 添加Spark worker的hostname, 一行一个。
Hadoop集群原理与运维实践-2Hadoop集群原理与运维实践第2课法律声明【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。
课程详情访问炼数成金培训网站第2课Hadoop集群安装部署准备集群安装前需要考虑的几点硬件选型–CPU、内存、磁盘、网卡等–什么配置?需要多少?网络规划– 1 GB?10 GB?–网络拓扑?操作系统选型及基础环境–Linux?Windows?什么版本?–哪些基础环境?Hadoop版本选型–Apache?CDH?HDP?哪个版本?硬件选型Hadoop集群的角色基本上分为两类:–Master:NameNode/Secondary NameNode/JobTracker/ResourceManager etc –Worker:DataNode/TaskTracker/NodeManagerMaster:–对CPU和内存要求高,不需要大容量存储–为了数据可靠性,可以做RAID–节点数要求不多,一般一个角色一台,HA配置需要多台Worker:–CPU和内存决定了单机的计算能力,磁盘容量决定了单机的存储能力–一般性能强硬些,多磁盘用于存储大量数据–节点数决定了集群规模,节点越多,集群计算和存储能力线性增长推荐生产集群配置Master WorkerCPU24 core +24 core+内存128G +(取决于集群规模)128G/256G+磁盘600G SAS RAID14T*12,不必RAID,JBOD 网卡10Gb,最好双网卡绑定10Gb,最好双网卡绑定网络规划客户端读写DataNode,MR shuffle等不可避免的数据传输,带宽越高性能越好网络拓扑规划上要考虑容灾操作系统选型OS:–虽然新版本Hadoop支持运行在Windows上,但在生产上不要运行Windows,以Linux为主–选择支持的Linux版本(CentOS、Redhat、SUSE、Ubuntu等),选择稳定的版本基础环境:–ssh、rsync、ntp、dns与主机名、jdk等–关闭iptables,关闭selinux、禁用swap关于分区与文件系统:–由于Hadoop的各个角色依赖本地磁盘,让数据目录独立分区–选择ext4/xfs等高效的文件系统Hadoop版本选型Hadoop除了官方社区发行的Apache Hadoop版本外,还有很多第三方的发行版,类似于Linux的发行版主流的有:Cloudera CDH、Hortonworks HDP、MapR,还有IBM、EMC、华为等各个发行版基于Apache开源版本进行优化,并提供了自己的特殊功能比如方便部署管理、特殊feature等如何选择?可参考以下几个因素:–是否免费?是否开源?–是否稳定?经过生产验证?–社区支持如何?文档是否健全?集群管理也可以用一些开源工具如puppet、chef来自己维护本次课程实验环境简介Hadoop版本:–CDH 5.12,基于command line安装硬件:–10台虚拟机,3 core 、10GB MemoryOS:–CentOS6.5参考文档:–https:///documentation/enterprise/latest/top ics/installation.html安装前的准备主机名和DNS–hadoop[01-10]–配置/etc/hosts,用主机名而尽量避免使用IP。
Hadoop、Zookeeper、Hbase、Hive集群安装配置手册运行环境机器配置虚机CPU E5504*2 (4核心)、内存 4G、硬盘25G进程说明QuorumPeerMain ZooKeeper ensemble member DFSZKFailoverController Hadoop HA进程,维持NameNode高可用 JournalNode Hadoop HA进程,JournalNode存储EditLog,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功,保证数据高可用 NameNode Hadoop HDFS进程,名字节点DataNode HadoopHDFS进程, serves blocks NodeManager Hadoop YARN进程,负责 Container 状态的维护,并向 RM 保持心跳。
ResourceManager Hadoop YARN进程,资源管理 JobTracker Hadoop MR1进程,管理哪些程序应该跑在哪些机器上,需要管理所有 job 失败、重启等操作。
TaskTracker Hadoop MR1进程,manages the local Childs RunJar Hive进程HMaster HBase主节点HRegionServer HBase RegionServer, serves regions JobHistoryServer 可以通过该服务查看已经运行完的mapreduce作业记录应用 服务进程 主机/hostname 系统版本mysql mysqld10.12.34.14/ Centos5.810.12.34.15/h15 Centos5.8 HadoopZookeeperHbaseHiveQuorumPeerMainDFSZKFailoverControllerNameNodeNodeManagerRunJarHMasterJournalNodeJobHistoryServerResourceManagerDataNodeHRegionServer10.12.34.16/h16 Centos5.8 HadoopZookeeperHbaseHiveDFSZKFailoverControllerQuorumPeerMainHMasterJournalNodeNameNodeResourceManagerDataNodeHRegionServerNodeManager10.12.34.17/h17 Centos5.8 HadoopZookeeperHbaseHiveNodeManagerDataNodeQuorumPeerMainJournalNodeHRegionServer环境准备1.关闭防火墙15、16、17主机:# service iptables stop2.配置主机名a) 15、16、17主机:# vi /etc/hosts添加如下内容:10.12.34.15 h1510.12.34.16 h1610.12.34.17 h17b) 立即生效15主机:# /bin/hostname h1516主机:# /bin/hostname h1617主机:# /bin/hostname h173. 创建用户15、16、17主机:# useraddhduser密码为hduser# chown -R hduser:hduser /usr/local/4.配置SSH无密码登录a)修改SSH配置文件15、16、17主机:# vi /etc/ssh/sshd_config打开以下注释内容:#RSAAuthentication yes#PubkeyAuthentication yes#AuthorizedKeysFile .ssh/authorized_keysb)重启SSHD服务15、16、17主机:# service sshd restartc)切换用户15、16、17主机:# su hduserd)生成证书公私钥15、16、17主机:$ ssh‐keygen ‐t rsae)拷贝公钥到文件(先把各主机上生成的SSHD公钥拷贝到15上的authorized_keys文件,再把包含所有主机的SSHD公钥文件authorized_keys拷贝到其它主机上)15主机:$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys16主机:$cat ~/.ssh/id_rsa.pub | ssh hduser@h15 'cat >> ~/.ssh/authorized_keys'17主机:$cat ~/.ssh/id_rsa.pub | ssh hduser@h15 'cat >> ~/.ssh/authorized_keys'15主机:# cat ~/.ssh/authorized_keys | ssh hduser@h16 'cat >> ~/.ssh/authorized_keys'# cat ~/.ssh/authorized_keys | ssh hduser@h17 'cat >> ~/.ssh/authorized_keys'5.Mysqla) Host10.12.34.14:3306b) username、passwordhduser@hduserZookeeper使用hduser用户# su hduser安装(在15主机上)1.下载/apache/zookeeper/2.解压缩$ tar ‐zxvf /zookeeper‐3.4.6.tar.gz ‐C /usr/local/配置(在15主机上)1.将zoo_sample.cfg重命名为zoo.cfg$ mv /usr/local/zookeeper‐3.4.6/conf/zoo_sample.cfg /usr/local/zookeeper‐3.4.6/conf/zoo.cfg2.编辑配置文件$ vi /usr/local/zookeeper‐3.4.6/conf/zoo.cfga)修改数据目录dataDir=/tmp/zookeeper修改为dataDir=/usr/local/zookeeper‐3.4.6/datab)配置server添加如下内容:server.1=h15:2888:3888server.2=h16:2888:3888server.3=h17:2888:3888server.X=A:B:C说明:X:表示这是第几号serverA:该server hostname/所在IP地址B:该server和集群中的leader交换消息时所使用的端口C:配置选举leader时所使用的端口3.创建数据目录$ mkdir /usr/local/zookeeper‐3.4.6/data4.创建、编辑文件$ vi /usr/local/zookeeper‐3.4.6/data/myid添加内容(与zoo.cfg中server号码对应):1在16、17主机上安装、配置1.拷贝目录$ scp ‐r /usr/local/zookeeper‐3.4.6/ hduser@10.12.34.16:/usr/local/$ scp ‐r /usr/local/zookeeper‐3.4.6/ hduser@10.12.34.17:/usr/local/2.修改myida)16主机$ vi /usr/local/zookeeper‐3.4.6/data/myid1 修改为2b)17主机$ vi /usr/local/zookeeper‐3.4.6/data/myid1修改为3启动$ cd /usr/local/zookeeper‐3.4.6/$./bin/zkServer.sh start查看状态:$./bin/zkServer.sh statusHadoop使用hduser用户# su hduser安装(在15主机上)一、安装Hadoop1.下载/apache/hadoop/common/2.解压缩$ tar ‐zxvf /hadoop‐2.4.0.tar.gz ‐C /usr/local/二、 编译本地库,主机必须可以访问internet。
HDFS 维护手册(0.19.1)1HDFS概述HDFS是Hadoop应用用到的一个最主要的分布式存储系统。
一个HDFS集群主要由一个NameNode和很多个Datanode组成:Namenode管理文件系统的元数据,而Datanode存储了实际的数据。
本文档主要关注用户以及管理员怎样和HDFS进行交互。
基本上,客户端联系Namenode以获取文件的元数据或修饰属性,而真正的文件I/O操作是直接和Datanode进行交互的。
本文档从介绍如何安装和搭建HDFS集群入手,接着常用的文件系统命令,以及维护过程中涉及到的控制命令。
2HDFS集群部署2.1安装1) 用户从hadoop官方网站下载所需版本的安装文件,下载地址为:/core/releases.html#Download;本文档选取的版本为hadoop-0.19.1;2) 将下载的压缩文件解压,目录为./hadoop-0.19.1,按照附录《hdfs 测试组网方案》中系统参数配置部分,修改./hadoop-0.19.1/conf中的文件;3) 检查所有服务器上是否安装了J2sdk,要求版本为1.5及以上;并建立安装目录到/usr/local/j2sdk的软链接;4) 将hadoop目录上传到所有的服务器,放置在${HADOOP_HOME}目录下;5) 挂载namenode和secondary namenode的fsimage,editslogs备份目录;2.2启动1) 进入namenode的${HADOOP_HOME};2) 格式化namenode文件系统,执行命令:bin/hadoop namenode –format;3) 启动hdfs,执行命令:bin/start-dfs.sh。
该脚本首先启动namenode,然后读取./conf/slaves中的datanode列表,逐个启动;最后读取./conf/masters中secondary namenode 地址,启动secondary namenode。
hadoop 操作手册Hadoop 是一个分布式计算框架,它使用 HDFS(Hadoop Distributed File System)存储大量数据,并通过 MapReduce 进行数据处理。
以下是一份简单的 Hadoop 操作手册,介绍了如何安装、配置和使用 Hadoop。
一、安装 Hadoop1. 下载 Hadoop 安装包,并解压到本地目录。
2. 配置 Hadoop 环境变量,将 Hadoop 安装目录添加到 PATH 中。
3. 配置 Hadoop 集群,包括 NameNode、DataNode 和 JobTracker 等节点的配置。
二、配置 Hadoop1. 配置 HDFS,包括 NameNode 和 DataNode 的配置。
2. 配置 MapReduce,包括 JobTracker 和 TaskTracker 的配置。
3. 配置 Hadoop 安全模式,如果需要的话。
三、使用 Hadoop1. 上传文件到 HDFS,使用命令 `hadoop fs -put local_file_path/hdfs_directory`。
2. 查看 HDFS 中的文件和目录信息,使用命令 `hadoop fs -ls /`。
3. 运行 MapReduce 作业,编写 MapReduce 程序,然后使用命令`hadoop jar my_` 运行程序。
4. 查看 MapReduce 作业的运行结果,使用命令 `hadoop fs -cat/output_directory/part-r-00000`。
5. 从 HDFS 中下载文件到本地,使用命令 `hadoop fs -get/hdfs_directory local_directory`。
6. 在 Web 控制台中查看 HDFS 集群信息,在浏览器中打开7. 在 Web 控制台中查看 MapReduce 作业运行情况,在浏览器中打开四、管理 Hadoop1. 启动和停止 Hadoop 集群,使用命令 `` 和 ``。
windows安装hadoop博客分类:•hadoopWindowsHadoopJavaJDKMapreducehadoop是什么就不多说了,看这里hadoop推荐部署环境是在linux,但是我们想要在windows体验一下还是可以的,followme我的环境:windowsxp,hadoop安装包(0.20.1),cygwin打开cygwin Java代码1.explorer.把hadoop的包放到这个目录下然后输入命令Java代码1.tarzxfhadoop-0.20.1.tar.gz解压完成后进入hadoop-0.20.1的配置目录,打开core-site.xml,加入以下内容。
这里是定义namenode运行地址和端口Xml代码1.<property>2.<name></name>3.<value>hdfs://localhost:9000</value>4.</property>打开hdfs-site.xml,加入以下内容Java代码1.<property>2.<name>dfs.replication</name>3.<value>1</value>4.</property>这里把复制因子设置为1是因为我们在windows上做伪分布,只能启动一个datanode接下来可以定义namenode数据目录,和datanode数据目录。
当然这个不是必须的,默认是在/tmp目录下面Xml代码1.<property>2.<name>.dir</name>3.<value>c:/filesystem/name</value>4.</property>5.<property>6.<name>dfs.data.dir</name>7.<value>c:/filesystem/data</value>8.</property>最后修改hadoop-env.sh,把下面注释的这行打开,并设置为你的jdk路径。
Had oop部分启动命令:start-all.sh停止命令:stop-all.shHadoop运行增加集群的存储量/节点如果只增加集群的存储量,建议增加Hadoop datanode节点。
步骤:1、停掉集群包括Hadoop和hbase,当然也可以不停掉,直接在hadoop namenode的配置文件Slave里添加新节点的host,别忘了在host文件里也要添加新添加的host名。
2、执行bin/start-all.sh启动集群3、以下选择一种1)如果不手动作平衡,插入的数据将会放在新添加的节点上。
以趋于平衡。
2)如果手动平衡,则start-balancer.sh和调用bin/sHadoop balancer命令相似,也可加参数-threshold 5(threshold 是平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长)。
在使用start-balancer.sh时,如果在hdfs-site.xml里面没有配置dfs.balance.bandwidthPerSec,那么集群hdfs内部默认使用1M/S的速度移动数据(so slowly...),我们可以通过在hdfs-site.xml里面配置dfs.balance.bandwidthPerSec来加快balance的速度。
最开始我们配置的是20m/S ,然后结果是导致job运行变得不稳定,出现一些意外的长map单元,某些reduce时间处理变长(整个集群负载满满的情况下,外加20m/s的balance),在前天的中国hadoop年会上听淘宝调整的为10m/s,需要调整后实验,看看情况如何。
另外再修改dfs.balance.bandwidthPerSec参数后,需要在namenode上运行stop-dfs.sh start-dfs.sh重启hdfs生效。
我们可以通过stop-balancer.sh停掉平衡任务。
作完平衡后,启动hbase,正常。
果cluster设置的副本数不为3(默认),需要先运行命令hadoop fs –setrep [-R] <path> ;进行设置一个文件的副本系数。
如果默认为3则不必。
如果执行完平衡以后才改变副本数,会将新加入到新节点上的所有数据删除。
dfs.replication设置的副本系数只在文件系统写入时有效,并不影响在新添加节点时,平衡时的副本数;另外:由于还有hbase数据库,因此,在运行完平衡以后,将hbase下的.META.文件删除(防止出错),启动hbase,执行hbase org.jruby.Main add_table /表名来进行hbase表恢复;Hadoop1升级1.运行dfsadmin -upgradeProgress status 检查是否存在备份如果是第一次升级就不存在备份(在升级Hadoop前,如果已经存在备份,需要先结束finalize 它。
)2.备份node.dir下文件,同时要备份下hdfs的文件目录的元数据信息:bin/hadoop fsck / -files -blocks -locations > dfs-v-old-fsck-1.logbin/hadoop dfs -lsr / > dfs-v-old-lsr-1.logbin/hadoop dfsadmin -report > dfs-v-old-report-1.log3.停止所有节点bin/stop-all.sh4.在所有节点上重新部署hadoop 并替换conf文件夹下所有文件(就是将原有的hadoop-0.19.1更名为hadoop-0.19.1-oldverstion,然后解压hadoop-0.19.2.tar.gz 将0.19.2中的conf文件替换为0.19.1中的conf文件夹)并且要对照修改hadoop-site.xml中的路径指定是否正确5.使用bin/start-dfs.sh -upgrade 进行升级(DFS从一个版本升级到另外一个版本的时候,NameNode和DataNode使用的文件格式有可能会改变。
当你第一次使用新版本的时候,你要告诉Hadoop 去改变HDFS版本,否则,新版本不会生效)6.监控升级情况和升级问题处理开始升级,你可以通过bin/hadoop dfsadmin -upgradeProgress命令来查看版本升级的情况。
当然你可以使用bin/hadoop dfsadmin -upgradeProgress details来查看更多的详细信息。
当升级过程被阻塞的时候,你可以使用bin/hadoop dfsadmin -upgradeProgress force来强制升级继续执行(当你使用这个命令的时候,一定要慎重考虑)。
当HDFS升级完毕后,Hadoop依旧保留着旧版本的有关信息,以便你可以方便的对HDFS进行降级操作。
可以使用bin/start-dfs.sh -rollback来执行降级操作。
7.对比现有hdfs的文件目录的元数据信息和升级的差异。
8.升级完成,Hadoop一次只保存一个版本的备份,当新版本运行几天以后还是没有出现什么问题,你就可以使用运行一段时间后没有问题再执行升级终结操作bin/hadoop dfsadmin -finalizeUpgrade命令把旧版本的备份从系统中删掉了。
删除以后rollback 命令就失效了。
HdfsMapreduceHbase部分启动命令:start-hbase.sh如果一个regionserver死掉了,可以执行该命令启动,也可以启动整个hbase;停止命令:stop-hbase.sh停止hbase运行的命令.日常维护1.基本命令建表:create 'testtable','coulmn1','coulmn2'也可以建表时加coulmn的属性如:create 'testtable',{NAME => 'coulmn1', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '10', COMPRESSION => 'LZO', TTL => '30000', IN_MEMORY => 'false', BLOCKCACHE => 'false'}, {NAME => 'coulmn', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '30', COMPRESSION => 'LZO', TTL => '30000', IN_MEMORY => 'true'} (其中的属性有versions:设置历史版本数,TTL:过期时间,COMPRESSION:压缩方式,当配置lzo的情况)删除表:drop 'testtable' (删除表之前先要禁用表,命令disable 'testtable')启用和禁用表:enable 'testtable' 和disable 'testtable'其它的基本命令:describe 'testtable'(查看表结构),alert 修改表结构,list 列出所有表。
2.维护命令1,major_compact 'testtable',通常生产环境会关闭自动major_compact(配置文件中hbase.hregion.majorcompaction设为0),选择一个晚上用户少的时间窗口手工major_compact,如果hbase 更新不是太频繁,可以一个星期对所有表做一次major_compact,这个可以在做完一次major_compact后,观看所有的storefile数量,如果storefile数量增加到major_compact后的storefile的近二倍时,可以对所有表做一次major_compact,时间比较长,操作尽量避免高锋期。
2,flush 'testtable',将所有memstore刷新到hdfs,通常如果发现regionserver的内存使用过大,造成该机的regionserver很多线程block,可以执行一下flush操作,这个操作会造成hbase的storefile数量剧增,应尽量避免这个操作,还有一种情况,在hbase进行迁移的时候,如果选择拷贝文件方式,可以先停写入,然后flush所有表,拷贝文件。
3,balance_switch true或者balance_switch flase,配置master是否执行平衡各个regionserver的region 数量,当我们需要维护或者重启一个regionserver时,会关闭balancer,这样就使得region在regionserver上的分布不均,这个时候需要手工的开启balance。
3.重启一个regionserverbin/graceful_stop.sh --restart --reload --debug nodename这个操作是平滑的重启regionserver进程,对服务不会有影响,他会先将需要重启的regionserver上面的所有region迁移到其它的服务器,然后重启,最后又会将之前的region迁移回来,但我们修改一个配置时,可以用这种方式重启每一台机子,这个命令会关闭balancer,所以最后我们要在hbase shell里面执行一下balance_switch true,对于hbase regionserver重启,不要直接kill进程,这样会造成在zookeeper.session.timeout这个时间长的中断,也不要通过bin/hbase-daemon.sh stop regionserver去重启,如果运气不太好,-ROOT-或者.META.表在上面的话,所有的请求会全部失败。
4.关闭下线一台regionserverbin/graceful_stop.sh --stop nodename和上面一样,系统会在关闭之前迁移所有region,然后stop进程,同样最后我们要手工balance_switch true,开启master的region均衡。