您现在的位置是:亿华云 > 域名
Hadoop集群搭建及Python操作
亿华云2025-10-08 23:09:07【域名】8人已围观
简介最近项目中在做千亿大数据存储检索需求,要把10T的文本数据进行解析处理存入数据库进行实时检索,文件的存储成为一个首要处理的问题,使用了多种存储方式,都不是很满足要求,最后使用 HDFS 分布式文件存储
最近项目中在做千亿大数据存储检索需求,集群及要把10T的搭建文本数据进行解析处理存入数据库进行实时检索,文件的集群及存储成为一个首要处理的问题,使用了多种存储方式,搭建都不是集群及很满足要求,最后使用 HDFS 分布式文件存储系统发现效率、搭建管理等各方面都挺不错,集群及就研究了一下搭建使用方式,搭建特此记录文档
环境
修改主机名
# 按照上面环境配置修改每个机器的集群及hostname vi /etc/hostname # 使用hostname命令使其生效,就不用重启了 hostname xxxx修改hosts文件
vi /etc/hosts 192.168.143.130 master 192.168.143.131 slave1 192.168.143.132 slave2 192.168.143.133 slave3 192.168.143.134 slave4配置免密登录
ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub master ssh-copy-id -i ~/.ssh/id_rsa.pub slave1 ssh-copy-id -i ~/.ssh/id_rsa.pub slave2 ssh-copy-id -i ~/.ssh/id_rsa.pub slave3 ssh-copy-id -i ~/.ssh/id_rsa.pub slave4安装JDK(每台机器)
apt-get install -y openjdk-8-jre-headless openjdk-8-jdk配置环境变量
在/etc/profile文件最后添加如下内容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools/jar export HADOOP_HOME=/usr/hadoop-3.3.0/ export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native使环境变量生效
source /etc/profile创建目录(每天机器)
创建目录的搭建时候要注意,先通过df -h命令查看本机上的集群及磁盘空间,确定好数据存储的搭建磁盘,然后创建以下三个目录,集群及在下面的香港云服务器搭建配置文件hdfs-site.xml中修改对应的目录配置即可
mkdir -p /home/hadoop/dfs/name mkdir -p /home/hadoop/dfs/data mkdir -p /home/hadoop/temp安装配置Hadoop
下载Hadoop安装包
http://archive.apache.org/dist/hadoop/core/stable/hadoop-3.3.0.tar.gz
# 解压后拷贝到/usr目录下 tar -xzvf hadoop-3.3.0.tar.gz mv hadoop-3.3.0 /usr配置Hadoop
配置文件在
/usr/hadoop-3.3.0/etc/hadoop目录下
hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=rootcore-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> </configuration>hdfs-site.xml配置多个文件存储目录,使用逗号隔开即可
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/dfs/name</value> </property> <property> <name>dfs.dataname.data.dir</name> <value>/home/hadoop/dfs/data,集群及/usr1/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>workers
这里配置的就是DataNode的存储机器,不建议用master作为存储,如果存满了集群就不能用了
slave1 slave2 slave3 slave4将master上的/usr/hadoop-3.3.9拷贝到其他机器即可
scp /usr/hadoop-3.3.0 slave1:/usr scp /usr/hadoop-3.3.0 slave2:/usr scp /usr/hadoop-3.3.0 slave3:/usr scp /usr/hadoop-3.3.0 slave4:/usr格式化HDFS目录(在master机器)
hdfs namenode-format启动Hadoop
在master机器上执行就可以了,执行完以后可以使用jps命令在所有机器上查看进程状态
cd /usr/hadoop-3.3.0/sbin ./start-all.sh查看进程状态
在master和slave上分别执行jps命令
查看是否成功
在浏览器上打开下面的网页,看能否正常访问
# Hadoop集群信息 http://192.168.143.130:8088/cluster # HDFS地址 http://192.168.143.130:9870/dfshealth.html # DataNode地址 http://192.168.143.130:9864/datanode.html # NodeManager地址 http://192.168.143.130:8042/node # SecondaryNameNode http://192.168.143.130:9868/status.html测试文件上传(master)
hdfs dfs -mkdir /test hdfs dfs -put start-dfs.sh /testHDFS操作命令
创建文件夹
hdfs dfs -mkdir /myTask创建多层文件
hdfs dfs -mkdir -p /myTask/input上传文件
hdfs dfs -put /opt/wordcount.txt /myTask查看总目录下的文件和文件夹
hdfs dfs -ls /查看myTask目录下的wordcount.txt文件内容
hdfs dfs -cat /myTask/wordcount.txt删除文件或文件夹
hdfs dfs -rm -r /myTask/wordcount.txt下载文件到本地
hdfs dfs -get /myTask/wordcount.txt /optPython操作hdfs
python操作hdfs时,如果要进行上传下载文件,必须在执行代码的机器上配置hosts文件,原因是hdfs的namenode和datanode注册后是免费信息发布网以hostname进行记录的,如果不配置直接进行上传下载操作,那么将会采用hostname进行操作,因此需要在本机上配置hdfs集群机器IP和hostname的对应配置。例如我在本机上进行操作,必须配置如下:
C:\Windows\System32\drivers\etc\hosts 192.168.143.130 master 192.168.143.131 slave1 192.168.143.132 slave2 192.168.143.133 slave3 192.168.143.134 slave4安装库
pip install hdfs操作
连接
from hdfs.client import Client client = Client("http://192.168.143.130:9870")创建目录
client.makedirs(hdfs_path)删除文件
client.delete(hdfs_path)上传文件
client.download(hdfs_path, local_path)获取目录下文件列表
client.list(hdfs_path)总结
HDFS 文件存储集群的优点是:配置要求低、易于扩展、效率比较高、非常适合大批量文件存储,而且可以提供 web 管理页面,提供非常好的第三方库。在进行 web 开发时,作为文件和图片存储库也是非常好的选择。
b2b供应网很赞哦!(86892)
相关文章
- (4) 使用何种形式的域名后缀对网页搜索影响不大,但域名后缀也需要考虑方便用户记忆
- Python常见报错及解决方案,建议收藏!
- 程序员都知道的vuex的冷门小技巧,超好用
- 使用自动化时的五个常见错误
- 顶级域名可以增加企业品牌的价值。随着经济的快速发展,域名已不再是企业在网络中的独立地位。顶级域名的服务范围、企业产品、综合形象体现等,对于企业单位来说,顶级域名的重要性不言而喻。
- Truncate、Delete和Drop的六大区别!你知道几个?
- 推荐一个前端技术选型神器!你用过了吗?
- 别再说不懂索引了
- 尽量不要在域名中出现特殊字符,这样的域名很容易导致访问者输入错误,同时给人留下不专业的印象,降低网站的可信度,并流失大量潜在客户。
- Go 错误处理新思路?用左侧函数和表达式